为未修改的模块跳过maven构建?

时间:2017-02-20 07:34:07

标签: java maven build

我正在使用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运行构建时,它的未检测模块会发生变化吗?

2 个答案:

答案 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