1

我正在寻找一种方法来根据配置文件动态化我的工件版本。

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

这个想法会是这样的版本

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

${后缀} =

  • "" 使用 prod 配置文件构建时
  • 使用 preprod 配置文件构建时的“-SNAPSHOT”
  • 使用开发配置文件构建时的“-DEV-SNAPSHOT”

有没有办法做到这一点?

谢谢

编辑 :

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

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

4

2 回答 2

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} 应该是在每个配置文件上设置为不同值的属性(为此,您可以看到这个问题)。我不知道是否有一个变量来获取当前用于构建的配置文件,那将是另一个问题:)

于 2012-10-21T14:17:06.573 回答
1

不需要重新组装 JAR,我宁愿使用标准机甲:只需在 jar 插件中为您的工件指定一个分类器。

否则我会过滤给定属性文件中的属性并在您的应用程序中读取它。这就是我所做的,例如system.env=prod|test|localdev

于 2012-10-21T19:08:12.727 回答