1.安装maven
Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。
开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。
Apache的开源项目主要服务于Java平台的构建、依赖管理、项目管理。
Project Object Model,项目对象模型。通过xml格式保存的pom.xml文件。该文件用于管理:源代码、配文
件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。该文件是由开发维护,我们运维人员可以不用去关心。
mvn package #会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下
官网: http://maven.apache.org/download.cgi
清华镜像: https://mirrors.tuna.tsinghua.edu.cn/apache/maven/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
rpm -ivh jdk-8u251-linux-x64.rpm
tar xf apache-maven-3.3.9-bin.tar.gz -C /usr/local/
ln -s /usr/local/maven-3.3.9 /usr/local/maven
cat /etc/profile.d/maven.sh
export PATH=/usr/local/maven/bin/:$PATH
source /etc/profile.d/maven.sh
mvn -v 查看版本
2.编译测试
#上传一个简单的java项目包hello‐world.tar.gz进行解压
tar xf hello-world.tar.gz
cd hello-world/
validate(验证): 验证项目正确,并且所有必要信息可用。
compile(编译): 编译项目源码
test(测试): 使用合适的单元测试框架测试编译后的源码。
package(打包): 源码编译之后,使用合适的格式(例如JAR格式)对编译后的源码进行打包。
integration‐test(集成测试): 如果有需要,把包处理并部署到可以运行集成测试的环境中去。
verify(验证): 进行各种测试来验证包是否有效并且符合质量标准。
install(安装): 把包安装到本地仓库,使该包可以作为其他本地项目的依赖。
deploy(部署): 在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。
mvn clean (清除) : 清除上次编译的结果
#测试
[root@jenkins hello-world]# mvn test
#打包
[root@jenkins hello-world]# mvn package #会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下
#打包结果
[root@jenkins hello-world]# ll target/
total 8
drwxr-xr-x 3 root root 17 12月 24 16:17 classes
-rw-r--r-- 1 root root 3132 12月 24 16:21 hello-world-1.0-SNAPSHOT.jar
drwxr-xr-x 2 root root 28 12月 24 16:21 maven-archiver
drwxr-xr-x 3 root root 35 12月 24 16:17 maven-status
-rw-r--r-- 1 root root 2874 12月 24 16:21 original-hello-world-1.0-SNAPSHOT.jar
drwxr-xr-x 2 root root 125 12月 24 16:17 surefire-reports
drwxr-xr-x 3 root root 17 12月 24 16:17 test-classes
3.maven使用阿里云
vim /usr/local/maven/conf/settings.xml </mirror>模块前插入
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
mvn package 测试看到比之前的快
4.maven使用私服
https://help.sonatype.com/repomanager3/download/download-archives---repository-manager-3
wget https://download.sonatype.com/nexus/3/nexus-3.13.0-01-unix.tar.gz
rpm -ivh jdk-8u251-linux-x64.rpm
tar xf nexus-3.13.0-01-unix.tar.gz -C /usr/local/
ln -s /usr/local/nexus-3.13.0-01/ /usr/local/nexus
/usr/local/nexus/bin/nexus start 启动
ss -lntup|grep :8081
http://192.168.122.104:8081 admin admin123
vim /usr/local/maven/setting.xml 插入在</servers>前面
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
vim /usr/local/maven/conf/settings.xml </mirror>模块前插入
<mirror>
<id>nexus</id>
<name>aliyun maven</name>
<url>http://192.168.122.104:8081/repository/maven-central/</url>
<mirrorOf>*</mirrorOf>
</mirror>
vim /usr/local/maven/conf/settings.xml </profiles>模块前插入
<profile>
<id>nexusTest</id>
<repositories>
<repository>
<id>local-nexus</id>
<url>http://192.168.122.104:8081/repository/maven-central/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
vim /usr/local/maven/conf/settings.xml </settings>模块前插入
<activeProfiles>
<activeProfile>nexusTest</activeProfile>
</activeProfiles>
java打包
cd hello-world
mvn clean
mvn package 第一次很慢 以后会很快
INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.458 s
[INFO] Finished at: 2020-12-28T11:45:44+08:00
[INFO] Final Memory: 17M/185M
java项目
https://gitee.com/zchuanzhao/jeesns.git
jenkins配置
使用脚本推送到tomcat上
5.上线java程序
Hello World
[root@jenkins hello-world-war]# cat /scripts/java_devops_tag_rollback.sh
#/bin/bash
##WORKSPACE是jenkins内置变量打印当前项目目录
Code_Dir=$WORKSPACE
Web_Dir=/soft/code/apache-tomcat-9.0.41/webapps
Web_IP="192.168.122.106"
Date=`date +%F-%H-%M-%S`
Time=$Date-${git_version}
get_code(){
cd $Code_Dir
}
scp_web_server(){
for Ip in $Web_IP
do
scp target/*.war $Ip:$Web_Dir/ROOT-$Time.war
ssh root@$Ip "cd $Web_Dir && rm -rf ROOT &&ln -s ./ROOT-$Time ROOT"
ssh root@$Ip "cd $Web_Dir && ../bin/catalina.sh stop && ../bin/catalina.sh start"
done
}
deploy(){
get_code
scp_web_server
}
rollback() {
for Ip in $Web_IP
do
back_file=`ssh root@$Ip "cd $Web_Dir && find ./ -maxdepth 1 -type d -name "ROOT-*-${git_version}""`
ssh root@$Ip "cd $Web_Dir && rm -rf ROOT &&ln -s $back_file ROOT"
ssh root@$Ip "cd $Web_Dir && ../bin/catalina.sh stop && ../bin/catalina.sh start"
done
}
###GIT_COMMIT GIT_PREVIOUS_SUCCESSFUL_COMMIT 成功的hash
if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
echo "你已经部署过此版本 ${git_version}"
rollback
else
deploy
fi