如何在maven中编译依赖?

时间:2012-02-06 20:47:03

标签: maven

场景:

我有一个主级别项目A,在A中,两个子项目B和C由不同的开发人员工作,但他们同意通过通用接口进行抽象。

B取决于C(依赖性)。 在B的pom我添加了

<dependency> .. details of project C..</dependency> .

执行此操作时,maven会将依赖项插入正常,但不会重新编译项目C.

我希望项目C在每次编译B时自动重新编译。

3 个答案:

答案 0 :(得分:19)

如果你想构建B并自动构建它的依赖项,你可以使用maven reactor的高级选项,如--also-make-dependents。

mvn clean install –-projects B –-also-make 

short

mvn clean install -pl B -am

这将编译B所依赖的A的所有子模块。 关于maven reactor的高级选项,sonatype博客上有一篇有用的文章。 http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/

答案 1 :(得分:9)

将项目B和C列为项目Pom中的模块A.现在,当您构建项目A时,它应该自动并以正确的顺序构建项目B和C.

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>multi</groupId>
    <artifactId>A</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>

    <modules>
        <module>B</module>
        <module>C</module>
    </modules>
</project>

有关多模块maven项目的示例,请参阅this

答案 2 :(得分:0)

我经常使用Maven reactor插件来处理这些类型的问题。这个插件甚至涵盖了复杂结构中具有许多子模块的复杂项目可能具有的严格要求。 有关示例,请参阅link

对于上述情况,请使用

mvn reactor:make -Dmake.folders=B 

构建B和C(以及B的所有依赖关系,如果有的话)。

希望这有用。