【问题标题】:Maven common parent with custom reporting plugin configuration具有自定义报告插件配置的 Maven 共同父级
【发布时间】:2011-07-25 15:18:32
【问题描述】:

我的团队有一个共同的父项目,其模块包含多个报告插件配置(例如 checkstyle 和 findbugs,类似于 Checkstyle's multimodule configuration,但在一个单独的项目中)。我将把公共父项目称为“common”,将报告模块称为“build-tools”。

我正在尝试找到一种方法,以便在发布公共项目时让公共项目引用正确版本的构建工具模块,而无需手动发布。

以下是我尝试过的几件事:

  • 使用 ${project.version} 作为构建工具版本号。这使用项目中指定的版本号,使用公共作为父级。
  • 使用常规版本号。这些不会在通用项目中更新。
  • 使用属性。同样,属性值不会在发布时更新。

谢谢!

【问题讨论】:

  • 我想我不完全理解你的问题。如果 common 聚合了 build-tools,为什么 common 会指代 build-tools 的一个版本? common 是 build-tools 的父级还是只是其他一些未命名模块的父级?
  • @Ryan common 是我们团队拥有的所有其他项目的父 pom,以及一个将构建工具作为模块的聚合器 pom。 build-tools 作为父级没有共同点。 common 还引用 build-tools 作为几个插件的插件依赖项。我的问题是我找不到一种自动化的方法来保持共同的构建工具依赖项是最新的。
  • 通过问题跟踪器进行了一些扫描,看起来jira.codehaus.org/browse/MRELEASE-649 与手头的问题有关。

标签: maven module maven-release-plugin


【解决方案1】:

您使用的是哪个版本的 maven-release-plugin?试试 2.1。这应该可以正确处理版本属性的替换。

【讨论】:

  • 我现在使用的是 2.1。现在我想起来了,部分问题可能是版本被引用的唯一地方是作为插件依赖项。在依赖管理中使用该属性可能会解决问题。
【解决方案2】:

我知道这样做的唯一方法是使 common 和 build-tools 具有相同的版本,并在发布时使用 -DautoVersionSubmodules:prepare。由于 common 聚合构建工具,如果两个模块在发布时具有相同的 SNAPSHOT 版本,则发布插件将同时发布和升级它们。

编辑:要保持依赖版本正确,您的第一个选项应该可以工作。共同点:

<dependency>
    <groupId>com.foo</groupId>
    <artifactId>build-tools</artifactId>
    <version>${project.version}</version>
</dependency>

这将使您的 common 项目始终依赖与 common 本身具有相同版本的构建工具。如果他们总是步调一致地升级,那应该可以满足您的要求。有问题吗?

【讨论】:

  • 更新了我的答案。你不是已经尝试过了吗?
  • 我没有将它作为直接依赖项,它是一个插件依赖项,这就是为什么,根据我在jira.codehaus.org/browse/MRELEASE-649 看到的内容,为什么我认为它不起作用 - 它没有通过 所有的依赖,只是直接的(dependencyManagement和依赖)。
  • 你看过plugin management吗?
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多