【问题标题】:Version management in MavenMaven 中的版本管理
【发布时间】:2020-07-01 14:35:33
【问题描述】:

我有两个不同的项目。 Project_1 是一个 Maven 多模块项目。 Project_2 依赖于 Project_2 的一些模块。我在 Project_1 的父 POM 中声明了一个版本属性,并在子 POM 中引用,如下所示。

Project_1 父 POM

<groupid>x</groupid>
<artifactid>y</artifactid>
<version>${app.version}</version>
<properties>
    <app.version>1.0.0</app.version>
</properties>

Project_1 子 POM

<parent>
    <groupid>x</groupid>
    <artifactid>y</artifactid>
    <version>${app.version}</version>
</parent>
<artifactid>y1</artifactid>

Project_2 POM

<dependency>
    <groupid>x</groupid>
    <artifactid>y</artifactid>
    <groupid>1.0.0</groupid>
</dependency>

我已经在本地存储库中使用“mvn clean install”安装了 Project_1,但问题是 Project_1 及其安装在本地存储库中的模块 pom 及其依赖项的版本为 ${app.version}。因此,如果我将 Project_1 或其模块作为 Project_2 中的依赖项,实际版本为 1.0.0,则会抛出找不到版本 1.0.0 的错误

有没有办法解决这个问题?在安装 Project_1 期间,我喜欢在本地存储库中用实际覆盖密钥 {app.version}。

【问题讨论】:

  • 我不会用属性设置版本。只需将其设置在&lt;version&gt;&lt;/version&gt; 标记中,并在构建项目时使用mojohaus.org/versions-maven-plugin/usage.html 来管理版本。您的 Project_2 POM 代码示例中似乎还有一个类型:&lt;groupid&gt; 是重复的。

标签: maven-3 pom.xml parent-pom


【解决方案1】:

同样可以通过 flatten-maven-plugin 实现。 如果包含 Parent 版本,flatten-maven-plugin 可以与 xml-maven-plugin 一起使用。

【讨论】:

    最近更新 更多