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 使用 ,表示构建当前模块所依赖到的模块,不会构建当前项目所有模块,向上。

以上含义是个人理解,可能不太符合原义

posted @ 2023-11-04 19:16  plum_wink  阅读(108)  评论(0编辑  收藏  举报