java - Maven版本插件,限制版本:update-properties damage

标签 java maven versions-maven-plugin

我有一个多模块 Maven 项目,其中模块共享依赖项。我所说的共享是指使用相同的依赖项。然而,每个模块本身都声明了依赖关系。为了保持理智(是的,maven,理智,我知道),并且让所有模块使用相同版本的依赖项,父 pom 声明带有版本号的属性:

<properties>
   <dependency1.version>1.0-SNAPSHOT</dependency1.version>
   <dependency2.version>1.1-SNAPSHOT</dependency2.version>
</properties>

所有模块都使用它,例如:

<dependency>
  <groupId>group</groupId>
  <artifactId>dependency1</artifactId>
  <version>${dependency1.version}</version>
</dependency>

我对这个设置非常满意,因为它允许我在一处更改依赖项版本。

现在我有一堆我自己维护的依赖项。这些的发布是自动的并且非常简单,基本上:

mvn release:prepare release:perform -B

现在我想进一步自动化,在我运行的主项目中:

mvn versions:update-properties

(基本上我还运行:“mvn versions:use-releases”来根据需要更改通常的依赖项,但这超出了这个问题的范围)。

运行此 update-properties 后,我的主项目 pom 中的属性指向版本(这很好)。但是,如果我的模块使用属性来定义其他依赖项的版本,并且这些项目有可用的新版本,那么这些属性也会更改。

有什么方法可以限制更新属性造成的损害吗? versions:use-release 采用 includes 属性,因此我只能在我的人工制品上使用它。找不到与 update-properties 类似的任何内容。

我可以恢复除父 pom 之外的所有 pom,并仅提交/推送该 pom,但这看起来并不优雅。

最佳答案

看来你没有理解maven的概念。 在这种情况下,您应该使用 dependencyManagement在父 pom 中如下所示:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice</artifactId>
      <version>3.0</version>
    </dependency>
    ...
   </dependencies>
</dependencyManagement>

在模块中,您只需使用如下依赖项:

  <dependencies>
    <dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice</artifactId>
    </dependency>
    ...
   </dependencies>

重要的一步不是定义版本。在这种情况下,将使用由依赖管理 block 定义的版本。因此,您不需要定义属性等,而且您可以在一个点上定义和更改特定版本的依赖项。

除此之外,还可以限制将要更改的属性,在 version:update-properties 的命令行上定义它。打电话。

关于java - Maven版本插件,限制版本:update-properties damage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13820416/

相关文章:

java.lang.ClassCastException : android. 部件.EditText

Java列表可视化

java - 任何版本的 maven-shade-plugin 是否适用于 Maven 2.2.1?

java - 如何在版本 Maven 插件中隐藏继承的依赖项?

Maven 版本插件更新到下一个快照

java - 检查该行是否是文本文档中的最后一行

java - 处理 Android Java 应用程序中的 Drive Rest API 错误

java - 在 Maven 中配置 JUnit 目录结构

java.lang.NoSuchMethodError : javax. persistence.Table.indexes()

maven-3 - mvn 版本 :set not updating child poms