具有属性的 Maven 版本

新手上路,请多包涵

我有大约 400 个插件的大型 Maven (Tycho) 项目。

我们在每个 POM 文件中指定了应用程序的版本。

有没有办法只在一个地方指定所有 POM:s 的版本?

我希望有些人会这样想:

 <properties>
<buildVersion>1.1.2-SNAPSHOT</buildVersion>
</properties>

....

<version>${buildVersion}</version>

我们有父母 pom.xml

 <modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>build.parent</artifactId>
<version>1.1.2-SNAPSHOT</version>
<packaging>pom</packaging>

然后在每个 POM 中引用父 POM:

 <parent>
  <artifactId>build.parent</artifactId>
  <groupId>company</groupId>
  <relativePath>../build.parent/pom.xml</relativePath>
  <version>1.1.2-SNAPSHOT</version>
</parent>

<modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>artifact</artifactId>
<version>1.1.2-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>

原文由 Jan Pešta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 370
2 个回答

请参阅 Maven - 用户 论坛 “版本”包含一个表达式,但应该是一个常量。添加新版本的更好方法? :

这就是为什么这是一个糟糕的计划。

部署的 pom 不会解析属性值,因此依赖该 pom 的任何人都会将依赖项视为未用 ${ } 插入的字符串,并且在您的构建过程中会接踵而至。

在 maven 2.1.0 和/或 2.2.0 中,尝试部署具有已解析属性的 poms…这超出了预期,这就是为什么不推荐使用这两个版本,推荐使用 2.2.1 的 2.x 版本.

原文由 Gerold Broser 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您有父项目,您可以在父 pom 中设置版本,在子项目中,您可以使用 ${project.version}${version} 属性引用兄弟库。

如果你想避免在每个孩子中重复父母的版本:你可以这样做:

 <modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>build.parent</artifactId>
<version>${my.version}</version>
<packaging>pom</packaging>

<properties>
<my.version>1.1.2-SNAPSHOT</my.version>
</properties>

然后在你的孩子 pom 中你必须做:

     <parent>
      <artifactId>build.parent</artifactId>
      <groupId>company</groupId>
      <relativePath>../build.parent/pom.xml</relativePath>
      <version>${my.version}</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>company</groupId>
    <artifactId>artifact</artifactId>
    <packaging>eclipse-plugin</packaging>

    <dependencies>
        <dependency>
           <groupId>company</groupId>
           <artifactId>otherartifact</artifactId>
           <version>${my.version}</version>
or
           <version>${project.version}</version>
        </dependency>
    </dependencies>

hth

原文由 Frederic Close 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏