说我有项目A,B,C和D. B取决于A,C取决于B,D取决于C,所以
A <-- B <-- C
^
└ --- D
有没有办法用maven来构建C和D给定B但是不构建A?在中有没有办法构建项目和依赖它的项目?
A,B,C和D属于多模块项目。我知道我可以建立整个项目,但这似乎是浪费。
编辑:针对此案例找到的解决方案,在多模块项目的根目录中执行mvn <your goals here> -pl B -amd
,并且仅供进一步参考,例如B也是一个多模块项目并且有一个,b,和c中的c,你想做c,做mvn <your goals here> -pl B\c -amd
另外,如果A和B在一个多模块项目中而C和D在另一个模块中,那么有没有办法做到这一点?我意识到这可能比较棘手。
platform | us-specific
|
A <-- B <-+-- C
^ |
└ --+-- D
答案 0 :(得分:0)
在包含platform
和us-specific
的文件夹中添加pom文件,如下所示:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>some.group</groupId>
<artifactId>handyPom</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>platform</module>
<module>us-specific</module>
</modules>
<name>Captain Man's Handy Dandy Pom</name>
</project>
包装需要pom
,您需要为每个要包含的内容提供一个模块。如果你愿意,名字可以改变。
如上所述,你做mvn <your goals here> -pl B -amd
。
-pl
(或--projects
)指定项目列表,而不是构建每个项目。
c
在B
中指定-pl B\c
之类的子项目。-pl B\c,C\a
,同时执行B\c
和C\a
。-foo
),您仍然可以像-pl \-foo
一样使用它。-amd
(或--also-make-dependents
)还会根据整个反应堆列表中的任何内容构建所有内容(例如,当您不使用-pl <projects>
时),即他们的家属
-am
(或--also-make
)也将构建列表依赖于完整反应堆的所有内容。即他们的依赖。A
是B
C
和D
是B
。