Maven编译指定(跳过)Module

在编译项目时,经常会遇到只编译指定Moudle 的情况,如果全部编译,耗时会很长

编译命令

编译制定模块的相关的命令

-am --also-make 同时构建所列模块的依赖模块;
-amd -also-make-dependents 同时构建依赖于所列模块的模块;
-pl --projects <arg> 构建制定的模块,模块间用逗号分隔;
-rf -resume-from <arg> 从指定的模块恢复反应堆。

编译测试

例如项目模块如下

<modules>
        <module>ModuleA</module>
        <module>ModuleB</module>
        <module>ModuleC</module>
        <module>ModuleD</module>
        <module>ModuleE</module>
    </modules>

首先查看一下依赖关系

mvn dependency:tree

上面的命令会列出所有的依赖关系和依赖的所有的包

自己打开各个module的pom看一下互相之间的依赖就行

假如只想编译ModuleB及其依赖的模块, 那么在编译的时候

mvn clean install -pl ModuleB -am 

假设Module依赖了A和C, 那么在编译的时候就只会编译A B C三个模块~

如果ModuleD依赖了B, 然后在编译的时候使用了-amd的话, 那么ModuleD也会被编译, 这个意思就是编译依赖了所列模块的模块

mvn clean install -pl ModuleB -am -amd

使用上面的命令会同时编译 A B C D ~

-rf 选项用于选择起始位置(发现结合-rf的时候, -am和-amd是需要后置的)

假设ModuleA和ModuleC都依赖ModuleB, 那么如果在ModuleB截断, 整个流程不会变, 如果在ModuleA截断, 那么只会从ModuleA开始执行后面的构建流程。

mvn install -pl ModuleB -am -amd -rf ModuleA

上面的命令是从ModuleA开始截断的

总结

一般来说经常用到的命令, 你想编译的Module: ModuleX

mvn clean install ModuleX -am
posted @ 2020-12-31 10:12  ℡angel  阅读(2962)  评论(0编辑  收藏  举报