<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
-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成功安装到本地库