maven动态版

时间:2012-10-21 13:38:24

标签: maven

我根据个人资料搜索动态我的工件版本。

我为dev或preprod构建时经常使用-SNAPSHOT后缀。但数据库连接取决于配置文件,我不知道是否使用dev或preprod配置文件构建了最新的SNAPSHOT版本。

这个想法将是一个像这样的版本

<version>1.0${suffix}</version> 

with $ {suffix} =

  • “”使用prod profile进行构建时
  • 使用preprod配置文件构建
  • “ -​​ SNAPSHOT”
  • 使用开发配置文件构建
  • “ -​​ DEV-SNAPSHOT”

有没有办法实现这个目标?

感谢

编辑:

我的目标是当我继续使用jenkins来构建我的jar时,我使用3个配置文件构建了我的项目的相同“标记”版本,并且它部署了3个不同的工件。

实际上我标记了我的项目并使用prod配置文件进行构建,然后我修改版本以添加-SNAPSHOT,提交,移动标记,使用preprod配置文件重新构建,然后重复开发配置文件。

2 个答案:

答案 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