有没有办法从大型反应堆构建中排除某些模块,类似于-pl?
以下是一些持续执行此操作的方法:
How to exclude a module from a Maven reactor build?
我想从shell开始,或者至少不修改poms,我不允许更改。
答案 0 :(得分:83)
Maven 3.2.1添加了此功能,您可以用来指定所需的确切项目(或排除您不想要的项目)-pl
或--projects
以下是如何排除两个:
-pl "!<modulename>,!<modulename2>"
用于排除某些模块。这可以是要包含/排除的逗号分隔值列表。
答案 1 :(得分:44)
对接受的答案的另一个评论,在bash中运行命令时不要忘记逃避感叹号:
> mvn clean install -pl \!module,\!module/submodule,\!groupId:artifactId
答案 2 :(得分:13)
正如Yogesh_D所写,可以使用maven 3.2.1 +
的-pl参数完成以下是一个例子:
> mvn clean install -amd -pl !module,!module/submodule
您需要手动列出每个子模块(和子子模块等),它不会递归地排除它们。使用斜杠进行包分离。它是文件夹路径,而不是组或工件ID。
答案 3 :(得分:7)
我认为目前无法从命令行进行此操作。 maven3中有一个开放的功能请求(http://jira.codehaus.org/browse/MNG-5230)。
此时看起来你唯一的选择就是修改pom并创建一个新的构建配置文件,其中只包含你要构建的模块。
答案 4 :(得分:2)
您可以使用减号 !
代替感叹号 -
。
mvn clean -pl -module1
您也可以排除多个模块。
mvn clean -pl -module1,-module2
或
mvn clean -pl -module1 -pl -module2
测试:
排除的模块必须在当前项目的反应堆中,所以我们不能排除不存在的模块。
mvn clean -pl -no-existing-module
答案 5 :(得分:0)
在2019年是
mvn install -pl !:module1
(Windows 10 cmd)
答案 6 :(得分:-2)
逗号分隔的模块名称,用双引号引起来。 例如:
mvn install -pl "!Module1, !Module2"