我根据个人资料搜索动态我的工件版本。
我为dev或preprod构建时经常使用-SNAPSHOT后缀。但数据库连接取决于配置文件,我不知道是否使用dev或preprod配置文件构建了最新的SNAPSHOT版本。
这个想法将是一个像这样的版本
<version>1.0${suffix}</version>
with $ {suffix} =
有没有办法实现这个目标?
感谢
编辑:
我的目标是当我继续使用jenkins来构建我的jar时,我使用3个配置文件构建了我的项目的相同“标记”版本,并且它部署了3个不同的工件。
实际上我标记了我的项目并使用prod配置文件进行构建,然后我修改版本以添加-SNAPSHOT,提交,移动标记,使用preprod配置文件重新构建,然后重复开发配置文件。
答案 0 :(得分:2)
看到你对@ Michael-O评论的回答,我建议配置maven assembly plugin
根据每个配置文件上设置的系统属性创建工件的最终名称。例如:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create jar according to profile</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}-${project.version}_${profile}</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
其中$ {profile}应该是在每个配置文件上设置为不同值的属性(为此,您可以看到this question)。我不知道如果有一个变量来获取当前用于构建的配置文件,那将是另一个问题:)
答案 1 :(得分:1)
没有必要重新组装JAR,我宁愿使用标准机制:只需在jar插件中为您的工件指定classifier。
否则我会过滤给定属性文件中的属性并在您的应用中读取该属性。这就是我所做的,例如system.env=prod|test|localdev
。