2011-07-25 30 views
2

我的团队有一个共同的父项目,其中包含多个报告插件配置(例如checkstyle和findbugs,类似于Checkstyle's multimodule configuration,但位于单独的项目中)。我将打电话给共同父项目“common”和报告模块“build-tools”。带定制报告插件配置的Maven共同父母

我试图找到一种方法,当公共项目发布时,让公共项目引用正确版本的构建工具模块,而不需要手动发布。

这里有一对夫妇的事情,我已经试过:

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

谢谢!

+1

我想我不完全了解你的问题。如果通用聚合构建工具,为什么通常会引用构建工具的一个版本?常见的是构建工具的父级还是其他一些未命名模块的父级? –

+1

@Ryan common是我们团队拥有的每个其他项目的母团队,以及具有构建工具作为模块的聚合器团队。构建工具不具有作为父项的共同点。 common也引用了build-tools作为插件的一个插件依赖。我的问题是,我无法找到一种自动的方式来保持最新的构建工具依赖。 – deterb

+0

通过问题跟踪器进行了一些扫描,它看起来像http://jira.codehaus.org/browse/MRELEASE-649与手头的问题有关。 – deterb

回答

0

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

+0

我现在正在使用2.1。现在我想到了,问题的一部分可能是引用版本的唯一地方是插件依赖项。在依赖管理中使用属性可能会解决问题。 – deterb

0

我知道要做到这一点的唯一方法是在发布时准备通用和构建工具相同的版本并使用-DautoVersionSubmodules。由于常见的聚合构建工具,如果两个模块在发布时都具有相同的SNAPSHOT版本,则发布插件将发布并上传这两个模块。

编辑:要保持依赖版本正确,您的第一个选项应该可以工作。在常见的有:

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

那将使你共同的项目总是有相同的版本共同本身的构建工具的依赖。如果他们总是锁定步伐,那就应该做你想做的事情。它有问题吗?

+0

更新了我的答案。你不是已经尝试过这种方式吗? –

+0

我没有它作为一个直接的依赖项,它是一个插件依赖项,这就是为什么,基于我在http://jira.codehaus.org/browse/MRELEASE-649上看到的,为什么我认为它不工作 - 它不会经历所有的依赖关系,只是直接的依赖关系(dependencyManagement和dependencies)。 – deterb

+0

你看过[插件管理](http://maven.apache.org/pom.html#Plugin_Management)吗? –