我正在使用maven多模块构建,如下所示
<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将构建甚至module2,module3源文件,然后将module1,module2,module3 jar文件放在warApplication / target / lib下。
当我触发构建时,是否存在配置/方式,maven会验证模块下是否修改了任何文件,如果没有跳过该模块。对于战争文件,它将具体 已修改的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
运行构建时,它的未检测模块会发生变化吗?
答案 0 :(得分:1)
可能最好的选择是使用增量模块构建器。在您的扩展文件中进行更改后第一次需要mvn install
等等,您可以使用mvn -b incremental package
,它只构建从上一版本更改的模块。 github地址是https://github.com/khmarbaise/incremental-module-builder
答案 1 :(得分:0)
您可以使用配置文件构建您知道已更改的内容,因为pom中不支持时间戳
请点击此处了解详情:Maven Modules optional in pom.xml