我有一个多模块的Maven构建,其结构类似于
a/
pom.xml
b/
pom.xml
c/
pom.mxl
d/pom.xml
e/
pom.xml
某些分析插件运行缓慢,因此在构建多个模块(cd a; mvn install
)而不是单个模块(cd a/b/c; mvn install
)时,我想跳过它们。在单模块构建中,我可能会查看并修复所生成的警告,但是在多模块构建中,我将不再查看它们,因为完整构建实际上会构建数十个模块。
有没有一种方法可以确定我是否正在从内部构建多个模块?
我希望从reactor.build
运行时在所有模块中都定义类似/a
的东西,而从/a/b/c
运行时却没有定义类似的东西。
当我用Google搜索时,我所能找到的就是如何建立一个多模块构建或仅构建某些项目,这不是我想要的。
目标
我了解Maven的构建周期。我希望能够在pom root pom中添加这样的内容:
<properties>
<skipSlowPlugin>${multi.project.build}</skipSlowPlugin>
<properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.slow</groupId>
<artifactId>analysis-tool</artifactId>
<version>1.0.0</version>
<configuration>
<skip>${skipSlowPlugin}</skip>
</configuration>
</plugin>
</plugin>
</pluginManagement>
</build>
如果我从/a/b/c
运行构建,则multi.project.build
将为false,并且插件将运行。如果我从/a
或/a/b
运行,那么multi.project.build
将为true,并且该插件将无法运行。
在每种情况下,我都希望在当前目录下构建所有内容,因此--pm
和--am
是无关紧要的。