我使用Maven的多模块构建像下面跳过未修改模块的maven build?
<modules>
<module>module1</module>
<module>module2</module>// dependant on module 1
<module>module3</module>// dependant on module 2
<module>warApplication</module>// its a war file dependant on above modules
</modules>
目前的生成行为: - 如果我让只在模块1的变化,Maven会建连模块2,单词数源文件,然后把模块1,模块2,在warApplication/target/lib下的module3 jar文件。
当我触发构建时,是否有配置/方式,如果没有跳过该模块,maven将验证模块下是否有任何文件被修改。对于war文件,它会把特定的 lib文件修改过来。这将节省很多时间。
要检查是否有任何文件在模块下被修改,maven可以存储最后的编译时间。在开始构建之前,它会检查是否有任何文件在上次构建时间戳后被修改,如果是,则构建它,否则跳过它。
是否有任何maven插件可用于此?
更新: -
我的项目结构是
TopFolder
.mvn directory -> extensions.xml
build directory->build-Projects-> pom.xml
build directory-> parent -> pom.xml
modules - > module1 -> pom.xml
modules - > module2 -> pom.xml
modules - > module3 -> pom.xml
这里是我的,包括父POM
<modules>
<module>../../modules/module1</module>
<module>../../modules/module2</module>
</modules>
模块。我已经包括SCM标签<developerConnection>scm:svn:https://comp.com/svn/trunk</developerConnection>
在以下两个项目
build directory->build-Projects-> pom.xml
build directory-> parent -> pom.xml
从build directory->build-Projects-> pom.xml
建立运行所。 但问题是,当我更改任何文件的任何模块,并从build directory-> pom.xml
运行生成,其未检测模块更改?
我知道,这不是一个答案,但尝试gradle。 至少它会跳过重建未触及的模块。 – glebiuskv
你应该考虑即使你没有触及模块2,构建的结果可能会有所不同。首先,模块2的构建可能会因为您更改模块1调用的某个类而中断。同样,由于相同的原因,模块2的测试可能会通过或中断,具体取决于模块1.此外,还存在一些较少的问题就像使用模块2中模块1的公共常量一样。它们被编译到模块2中,因此即使您只更改了模块1中的常量,模块2的字节码也可以更改。 –
@JFMeier您是对的。如果我需要也建立模块2。但拉特的说,我肯定有没有像这样被改变,可以打破模块2,有没有办法我可以跳过模块2的构建 – user3198603