【问题标题】:Maven versions plugin, limit versions:update-properties damageMaven 版本插件,限制版本:update-properties 损坏
【发布时间】:2012-12-12 02:47:43
【问题描述】:

我有一个多模块 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”来更改通常的依赖项,但这超出了这个问题的范围)。

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

有没有办法限制更新属性造成的损害?版本:use-release 需要 includes 属性,所以我只能在我的人工制品上使用它。找不到更新属性的类似内容。

我可以恢复除父级之外的所有 pom 并仅提交/推送,但这似乎并不优雅。

【问题讨论】:

    标签: java maven versions-maven-plugin


    【解决方案1】:

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

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

    重要的一步不是定义版本。在这种情况下,将使用由依赖管理块定义的版本。所以你不需要定义属性等,而且你有一个点可以定义和更改依赖关系,特别是版本。

    除此之外,还可以在version:update-properties 调用的命令行中限制将要更改的属性。

    【讨论】:

    • 您好,感谢您的回答,我将考虑使用 重新配置我的依赖项。
    • 虽然我同意这个特定问题的答案,但似乎use-releases 中应该有一个评估属性部分的选项。有一个update-properties 目标的事实表明这是一个使用的模式。我在一个非多模块项目中使用这种模式只是为了将我的版本都保存在一个中心位置。例如,我有一个 pom,它从完全独立的项目的几个战争中建立一个耳朵 - 所以我将版本保留在属性下的顶部。
    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 2015-07-11
    • 2017-03-28
    • 2017-08-14
    • 2014-08-01
    • 1970-01-01
    • 2013-01-16
    • 2018-04-05
    相关资源
    最近更新 更多