<build>
  <finalName>userapi</finalName>
</build>

 

maven 参数化构建时 修改配置文件的值

maven构建出现版本号

mvn clean package -Dmaven.test.skip=true -P prod -DprofileServerVersion=$tag_version
参数讲解

跳过测试,这里的跳过测试,通常开发中junit单元测试

-Dmaven.test.skip=true选择maven启动的类型,生产还是开发环境

-P prod

选择maven启动的版本号,这里的tag_version是jenkins参数化构建自定义的一个参数

-DprofileServerVersion=$tag_version

brew 修改jenkins的工作目录 jenkins workspace位置 jenkins修改pom文件_本地库


-DprofileServerVersinotallow=$tag_version

这里的意思是在构建过程中,可以修改项目的配置文件。我下面的示例将会修改yml文件,同理修改properties文件与修改yml中是一致的。

pom的build中添加扫描路径

在pom的build中,添加需要修改文件的路径。<include>application.yml</include> 这里写死了application.yml文件路径,当然你也可以写成相对路径。

<build>
 <resources>
  <resource>
      <directory>src/main/resources</directory>
      <includes>
          <include>**/*</include>
      </includes>
  </resource>
  <resource>
      <directory>src/main/resources</directory>
      <includes>
          <include>application.yml</include>
      </includes>
      <filtering>true</filtering>
  </resource>
</resources>
</build>
在pom的profile接收构建参数

pom文件中,添加profile,这样在命令构建的过程中就可以指定参数。

<profiles>
 <profile>
     <id>prod</id>
     <properties>
         <profileActive>prod</profileActive>
         <!--这里的profileServerVersion就是,
         maven构建的-DprofileServerVersion参数,
         前面的-D后面的内容 -->
         <profileServerVersion>release_1.0.0</profileServerVersion>
     </properties>
 </profile>
</profiles>
yml文件中添加接收参数的参数和占位符

在application.yml添加此内容即可 server.version: @profileServerVersion@ 。值得注意 @profileServerVersion@ 就是接收 -DprofileServerVersion=$tag_version 的地方。

总结:

三步出发
第一步在pom的build中添加扫描路径,
第二步在pom的profile接收构建参数,
第三部在yml文件中添加接收参数的参数和占位符。

maven多模块打包处理参数使用

  • 2018-10-11
  • 浏览 (2,070)

maven的多模块项目打包时,有时并不需要将所有模块都打包,maven提供了参数,可以帮助我们轻松实现多模块的自定义打包。

假设现有项目结构如下

dailylog-parent
|-dailylog-common
|-dailylog-web

  • 三个文件夹处在同级目录中
  • dailylog-web依赖dailylog-common
  • dailylog-parent管理dailylog-common和dailylog-web。

根据资料已知:

参数

全称

释义

说明

-pl

--projects

Build specified reactor projects instead of all projects

选项后可跟随{groupId}:{artifactId}或者所选模块的相对路径(多个模块以逗号分隔)

-am

--also-make

If project list is specified, also build projects required by the list

表示同时处理选定模块所依赖的模块

-amd

--also-make-dependents

If project list is specified, also build projects that depend on projects on the list

表示同时处理依赖选定模块的模块

-N

--Non-recursive

Build projects without recursive

表示不递归子模块

-rf

--resume-from

Resume reactor from specified project

表示从指定模块开始继续处理

 

以下是在maven-3.3.9中的试验

1. 在dailylog-parent目录运行`mvn clean install -pl org.lxp:dailylog-web -am`,结果

  • dailylog-common成功安装到本地库
  • dailylog-parent成功安装到本地库
  • dailylog-web成功安装到本地库

该命令等价于`mvn clean install -pl ../dailylog-web -am`

2. 在dailylog-parent目录运行`mvn clean install -pl ../dailylog-common -am`,结果

  • dailylog-common成功安装到本地库
  • dailylog-parent成功安装到本地库

3. 在dailylog-parent目录运行`mvn clean install -pl ../dailylog-common -amd`,结果

  • dailylog-common成功安装到本地库
  • dailylog-web成功安装到本地库

由于dailylog-parent并不依赖dailylog-common模块,故没有被安装

4. 在dailylog-parent目录运行`mvn clean install -pl ../dailylog-common,../dailylog-parent -amd`,结果

  • dailylog-common成功安装到本地库
  • dailylog-parent成功安装到本地库
  • dailylog-web成功安装到本地库

5. 在dailylog-parent目录运行`mvn clean install -N`,结果

  • dailylog-parent成功安装到本地库

-N表示不递归,那么dailylog-parent管理的子模块不会被同时安装

6. 在dailylog-parent目录运行`mvn clean install -pl ../dailylog-parent -N`,结果

  • dailylog-parent成功安装到本地库

7. 在dailylog-parent目录运行`mvn clean install -rf ../dailylog-common`,结果

  • dailylog-common成功安装到本地库
  • dailylog-web成功安装到本地库