Jenkins 部署后端maven项目
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有关系,我试下来有两种方案,如下:
指定子模块pom文件
在 Build 流程中指定子模块的pom相对路径(相对于 Root pom.xml)
注意:如果子模块层级比较深的话,可以通过参数化构建方式指定pom的相对路径,具体配置如下:
然后你运行的话,会让你填写参数值
在Goals and options
命令行中指定要构建的模块
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
使用 ,表示构建当前模块所依赖到的模块,不会构建当前项目
所有模块,向上。以上含义是个人理解,可能不太符合原义