有没有办法从大型反应堆构建中排除某些模块,类似于 -pl ?
以下是一些持久的方法:
我想从 shell 来做,或者至少不修改 pom,我不允许改变它。
Maven 3.2.1 已经添加了这个特性,你可以使用来指定你想要的确切项目(或者排除你不想要的项目)-pl
或者--projects
这里是如何排除两个:
-pl "!<modulename>,!<modulename2>"
排除某些模块。这可以是您想要包含/排除的值的逗号分隔列表。
更新 Windows用户以下
> mvn clean [package|install] --projects \!groupId:artifactId
对已接受答案的另一条评论,在 bash 中运行命令时不要忘记转义感叹号:
> mvn clean install -pl \!module,\!module/submodule,\!groupId:artifactId
正如 Yogesh_D 所写,可以使用 maven 3.2.1+ 的 -pl 参数来完成
这是一个例子:
> mvn clean install -amd -pl !module,!module/submodule
您需要手动列出每个子模块(和子子模块等),它不会递归地排除它们。使用斜线分隔包。它是文件夹路径,而不是组或工件 ID。
我不相信这在命令行中是可能的。在 maven3 中有一个针对这件事的开放功能请求(https://issues.apache.org/jira/browse/MNG-5230)。
看起来此时您唯一的选择是修改 pom 并创建一个新的构建配置文件,其中仅包含您要构建的模块。
!
您可以使用减号代替感叹号-
。
mvn clean -pl -module1
您还可以排除多个模块。
mvn clean -pl -module1,-module2
或者
mvn clean -pl -module1 -pl -module2
经测试:
排除的模块必须在当前项目的reactor中,所以我们不能排除不存在的模块。
mvn clean -pl -no-existing-module
2019 年是
mvn install -pl !:module1
(Windows 10 命令行)
逗号分隔的模块名称用双引号括起来。例如::
mvn install -pl "!Module1, !Module2"