Jenkins 部署后端maven项目
多模块maven项目构建,部署其中一个模块
假设现在maven项目 parent 架构为,项目packing类型前面就是项目名:
+- parent
| +- gateway:jar
| +- user:jar
| +- oauth:pom
| | \- oauth-common:pom
| | \- oauth-service:jar
| +- common:pom
| | \- api-common:pom
| | \- file-common:pom
# common 是被所有 jar项目依赖的
此时我只想构建 oauth-service 项目,这种问题解决方案跟maven有关系,在网上搜到的而且本人正在使用的命令如下:
mvn -Dmaven.repo.local=/usr/local/tool/apache-maven-3.9.5/repo -DskipTests=true -pl com.parent:oauth-service -am clean package
命令参数解释:
-Dmaven.repo.local=/usr/local/tool/apache-maven-3.9.5/repo
: 这个主要是用来指定maven构建项目使用的依赖地址,如果你想每次构建都从远程仓库拉取依赖的话可以去除。
-DskipTests=true
:去除单元测试。单元测试构建很消耗时间,我自己的项目不需要用单元测试验证什么,所以剔除了。
-pl com.parent:oauth-service
:-pl <project> 指定项目构建,project 路径是相对路径。可以通过/
或者:
来指定。
/
:如果是这种,那么此时的命令应该是-pl oauth/oauth-service
,解释:是当前模块相对于整个项目也就是 parent 的相对路径:
::如果是这种,那么此时的命令应该是-pl com.parent:oauth-service
,解释:pom文件parent标签的groupId:当前模块的artifactId也就是打包之后的名字
-am
:需要配合-pl
使用 ,表示构建当前模块所依赖到的模块,不会构建当前项目
所有模块,向上。以上含义是个人理解,可能不太符合原义