项目组使用 Gitlab
+Nexus
+Maven
+Jenkins
该套环境构建Java
工程
构建流程:
- 开发人员提交
组件代码
、业务代码
以及相应的pom
文件到Gitlab
。 - 运维人员编写Jenkins脚本,构建
组件jar包
,并上传至Nexus
私服。 - 运维人员编写Jenkins脚本,根据
pom
文件构建业务jar包
,并部署到服务器上。
Maven
的 settings.xml
文件
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库地址,默认家目录的.m2目录 -->
<localRepository>/home/m2</localRepository>
<pluginGroups>
<!-- 可以为空 -->
</pluginGroups>
<proxies>
<!-- 可以为空 -->
</proxies>
<servers>
<!-- 这里写nexus私服的仓库,id不能重复 -->
<!-- 我有三个类型的仓库,我就配置了三个不同的id -->
<server>
<id>baikang-release</id>
<username>admin</username>
<password>baikang</password>
</server>
<server>
<id>baikang-snapshots</id>
<username>admin</username>
<password>baikang</password>
</server>
<server>
<id>baikang-group</id>
<username>admin</username>
<password>baikang</password>
</server>
</servers>
<mirrors>
<!-- 镜像地址,最好写group类型的仓库,比较全 -->
<mirror>
<id>baikang-group</id>
<name>internal nexus repository</name>
<url>http://192.168.1.11:8081/repository/baikang-group/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
</settings>
项目的 pom.xml
文件
····
<dependencies>
<dependency>
<groupId>com.cn</groupId>
<artifactId>sass-base-ws</artifactId>
<!-- 这里写LATEST,可以一直默认拉取SNAPSHOT库中的最新版本jar包,省去每次改版本号的步骤,
当然你的jar包也要传到SNAPSHOT仓库中才行 -->
<version>LATEST</version>
</dependency>
</dependencies>
<repositories>
<repository>
<!-- 仓库的id,直接写setting.xml中配置的镜像id即可 -->
<id>baikang-group</id>
<name>internal nexus repository</name>
<url>http://192.168.1.11:8081/repository/baikang-group/</url>
<snapshots>
<enabled>true</enabled>
<!-- 这个配置一定要写always,这样才能确保maven每次拉取snapshot仓库中的最新的版本 -->
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
····
Jenkins的构建组件配置
clean install deploy:deploy-file
-DrepositoryId=baikang-snapshots
-DgroupId=com.cn
-DartifactId=sass-base-ws
-Dversion=0.0.0.${BUILD_ID}-SNAPSHOT
-Dpackaging=jar
-Dfile=../project-ws-jar/sass-ws/sass-base-ws/target/sass-base-ws-0.0.2.jar
-Durl=http://192.168.1.11:8081/repository/baikang-hosted-snapshot/
命令解释
- -DrepositoryId=baikang-snapshots # 需要将组件deploy到的仓库id,我这里部署到snapshot仓库,就写它的id
- -DgroupId=com.cn # 坐标
- -DartifactId=sass-base-ws # 组件的jar包名字
- -Dversion=0.0.0.${BUILD_ID}-SNAPSHOT # 组件的jar包版本,BUILD_ID是Jenkins自带的环境变量,为当前构建的id
- -Dpackaging=jar # 组件的打包类型
- -Dfile=../project-ws-jar/sass-ws/sass-base-ws/target/sass-base-ws.jar # 需要deploy的本地jar包路径
- -Durl=http://192.168.1.11:8081/repository/baikang-hosted-snapshot/ # 仓库的url
假如如果我用以上命令上传组件的话,在nexus仓库中会是一下形式:
Jenkins的构建项目配置
clean install -pl sass-start -am -amd