你可以使用Maven profiles你的目的。
在父母項目中,您可以定義一個覆蓋提供所有必需模塊的modules
部分的配置文件。這樣的配置文件默認是有效的,所以在預期的行爲上沒有變化。
但是,正常POM(超出配置文件)的modules
部分將爲空。請注意,我們不能做相反的事情(這會更有意義):我剛剛嘗試過,但沒有奏效。
所以,這樣的樣本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>com.sample</groupId>
<artifactId>test3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
</modules>
<profiles>
<profile>
<id>aggregator</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>..\test</module>
<module>..\test2</module>
</modules>
</profile>
</profiles>
執行:
mvn clean install
的Maven也將啓動配置文件,並執行聚合建立符合市場預期。所以,沒有迴歸。
但是,在執行時:
mvn clean install -P!aggregator
Maven將停用如上所述並且如輪廓這樣,沒有模塊,僅執行父如你希望執行的反應器中生成。
可惜倒退的方法(配置爲空模塊的配置文件)在我的測試中不起作用,但這種方法應該有希望給你足夠的提示以達到你的目標。
更新
您在實際使用this new feature可因爲Maven的3.2.1。從票上的評論,有人有同樣的問題:
如何排除嵌套模塊?我嘗試了新功能,看起來好像:
1.當頂層模塊被排除時,它的嵌套模塊不是。
2.不可能直接排除嵌套模塊。
回答是:
嵌套模塊不是由父模塊中排除。 排除方法模仿包含方法,其匹配器不支持通配符等。 因此,級聯排除將需要像-amd這樣的額外標誌。 依賴圖是使用-pl當過濾以下列順序:
1.包含工程+可能的上游和下游
2.排除項目
3.跳過用於恢復項目
所以應該可以直接排除嵌套模塊,因爲它們應該在過濾開始之前存在於初始依賴關係圖中。
「我們有大約一百個項目,多模塊項目」,聽起來相當可怕的:) –
這就是現實:) – pan40