java – 插件依赖关系的Maven依赖关系管理

最近我遇到了以下问题:

当我为我的项目设置依赖关系管理时,我有一个child-pom使用插件与依赖关系,我想要与在依赖关系管理中声明的依赖关系同步。

在一个根pom,我在我的依赖管理:

<dependencyManagement>
    <dependencies>
      ...
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <version>2.4.0</version>
        </dependency>
      ...
    <dependencies>
<dependencyManagement>

在孩子pom中,我有一个需要gwt-user的插件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <version>2.4.0</version>
    <dependencies>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <version>2.4.0</version>
        </dependency>
            ...
        </dependencies>
  ...
</plugin>

但是,如果我删除gwt-maven-plugin中使用的依赖性版本,则编译失败。

还有另一种方法来实现吗?

PS:有一个相关的帖子Choosing dependency version in maven and maven plugin,没有回答我的问题

最佳答案
根据以下链接,似乎不可能:

> http://maven.40175.n5.nabble.com/dependency-management-within-plugin-dependencies-td78367.html
> http://jira.codehaus.org/browse/MNG-2496

这是我找到的解决方法,我想与大家分享,以防其他人遇到同样的问题:

在我的根pom中,我定义了一个属性,一个依赖关系管理和一个插件管理:

<properties>
    <gwtVersion>2.4.0</gwtVersion>
    <gwtMavenPluginVersion>2.4.0</gwtMavenPluginVersion>
</properties>

<dependencyManagement>
   <dependencies>
    ...
    <dependency>
        <groupId>com.google.gwt</groupId>
        <artifactId>gwt-user</artifactId>
        <version>${gwtVersion}</version>
    </dependency>
    ...
   <dependencies>
<dependencyManagement>

<pluginManagement>
        <plugins>
            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <version>${gwtMavenPluginVersion}</version>
            <dependencies>
                <dependency>
                    <groupId>com.google.gwt</groupId>
                    <artifactId>gwt-user</artifactId>
                    <version>${gwtVersion}</version>
                </dependency>
                ...
            </dependencies>
            ...
        </plugins>
...
</pluginManagement>

在我的孩子pom中,使用插件管理提供的关系(参见Maven2 – problem with pluginManagement and parent-child relationship),我只是声明插件依赖:

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>gwt-maven-plugin</artifactId>
</plugin>

现在如果我更改属性中的版本,它会自动影响所有直接的依赖关系和插件依赖。

转载注明原文:java – 插件依赖关系的Maven依赖关系管理 - 代码日志