在父pom中定义命名的依赖关系集

时间:2013-07-22 06:55:09

标签: maven

我希望能够在父pom中定义一组依赖项,并且能够在子poms中包含这些集合。

例如:

parent pom {
   set1 {artifact1, artifact2, artifact3}
   set2 {artifact4, artifact5}
   set3 {artifact6, artifact7}
}

child1 pom {
   dependencies {set1, set2}
}

child2 pom {
   dependencies {set2, set3}
}

此处还描述了此行为(未实现):http://docs.codehaus.org/display/MAVEN/Profiles+for+optional+dependencies

有没有办法做到这一点?谢谢!

1 个答案:

答案 0 :(得分:2)

我认为没有办法通过POM的父/子关系实现你想要的东西(尽管很高兴能够对此进行纠正),但是一个可能对你有用的解决方案是定义依赖关系组在他们自己的POM文件中,然后在各个模块中为此POM添加依赖项。

例如,这里是一些Spring依赖项的POM定义:

<groupId>com.xyz</groupId>
<artifactId>spring-deps</artifactId>
<version>SNAPSHOT</version>
<packaging>pom</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>3.1.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.1.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>  
        <version>3.1.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.1.4.RELEASE</version>
    </dependency>
</dependencies>

然后在模块的pom中定义对此pom的依赖:

<groupId>com.xyz</groupId>
<artifactId>module1</artifactId>
<version>SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>com.xyz</groupId>
        <artifactId>spring-deps</artifactId>
        <version>SNAPSHOT</version>
        <type>pom</type>
    </dependency>
</dependencies>

并且spring-deps pom中定义的所有Spring依赖项都会自动包含在内。