Maven:如何从父pom中获取继承dependencyManagement标记的配置文件?

时间:2013-01-08 19:17:05

标签: java maven maven-3 wsgen

我在自己的个人资料中运行wsgen因为我不希望每次构建产品时都运行它。但是当我运行它时,我收到一个关于丢失版本的错误:

  

$ mvn package -P wsgen [INFO]扫描项目... [错误]   build无法读取1个项目 - > [帮助1] [错误] [错误]   project project-ejb:2.3.15-SNAPSHOT   (C:\ Projects \ MyProject \ pom.xml)有1个错误   [ERROR]
  'build.plugins.plugin [org.jvnet.jax -WS-公地:JAXWS-行家-插件] .dependencies.dependency.version'   对于org.glassfish:javax.javaee:jar丢失了。 @第167行,第41栏   [ERROR] [ERROR]要查看错误的完整堆栈跟踪,请重新运行   使用-e开关的Maven。 [错误]使用-X开关重新运行Maven   启用完整调试日志记录[错误] [错误]有关的更多信息   错误和可能的解决方案,请阅读以下文章:   [错误] [帮助1]   http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException

这是儿童pom的片段(带有个人资料的pom):

<packaging>ejb</packaging>
<parent>
    <artifactId>MyProject</artifactId>
    <groupId>project</groupId>
    <version>2.3.15-SNAPSHOT</version>
</parent>
<profiles>
    <profile>
        <id>wsgen</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jax-ws-commons</groupId>
                        <artifactId>jaxws-maven-plugin</artifactId>
                        <version>2.1</version>
                        <executions>
...
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.glassfish</groupId>
                        <artifactId>javax.javaee</artifactId>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
</profile>

但是,在父pom中我用dependencyManagement标签下的版本来定义这种依赖关系。

我认为发生的事情是配置文件没有继承父的dependencyManagement标记,所以它认为依赖项缺少版本号。有没有办法让配置文件从父级继承?

2 个答案:

答案 0 :(得分:3)

dependencyManagement适用于 pom和child poms 中的dependencies。它不适用于插件中的dependencies(至少,这是我在几个插件中注意到的,例如maven-dependency-plugin)。

一种可能的解决方案是在您的父pom中定义一个属性(javax.javaee.version)并在dependencyManagement jaxws-maven-plugin插件中使用它。

答案 1 :(得分:2)

您可以使用<pluginManagement>标记在父pom中配置插件,让它成为版本号,阶段,目标或其他配置。

所有继承poms将具有与父pom相同的配置,只要您在子poms中声明相同的<groupId><artifactId>