65

有没有办法从大型反应堆构建中排除某些模块,类似于 -pl ?

以下是一些持久的方法:

如何从 Maven 反应器构建中排除模块?

我想从 shell 来做,或者至少不修改 pom,我不允许改变它。

4

7 回答 7

107

Maven 3.2.1 已经添加了这个特性,你可以使用来指定你想要的确切项目(或者排除你不想要的项目)-pl或者--projects这里是如何排除两个:

-pl "!<modulename>,!<modulename2>"

排除某些模块。这可以是您想要包含/排除的值的逗号分隔列表。

更新 Windows用户以下

> mvn clean [package|install] --projects \!groupId:artifactId
于 2014-04-01T10:48:22.370 回答
64

对已接受答案的另一条评论,在 bash 中运行命令时不要忘记转义感叹号:

> mvn clean install -pl \!module,\!module/submodule,\!groupId:artifactId
于 2014-12-16T13:20:19.147 回答
17

正如 Yogesh_D 所写,可以使用 maven 3.2.1+ 的 -pl 参数来完成

这是一个例子:

> mvn clean install -amd -pl !module,!module/submodule

您需要手动列出每个子模块(和子子模块等),它不会递归地排除它们。使用斜线分隔包。它是文件夹路径,而不是组或工件 ID。

于 2014-12-14T10:06:58.567 回答
6

我不相信这在命令行中是可能的。在 maven3 中有一个针对这件事的开放功能请求(https://issues.apache.org/jira/browse/MNG-5230)。

看起来此时您唯一的选择是修改 pom 并创建一个新的构建配置文件,其中仅包含您要构建的模块。

于 2012-11-08T08:02:47.493 回答
3

!您可以使用减号代替感叹号-

mvn clean -pl -module1

您还可以排除多个模块。

mvn clean -pl -module1,-module2

或者

mvn clean -pl -module1 -pl -module2

经测试:

  • 阿帕奇 Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T20:33:14+02:00)
  • Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)

排除的模块必须在当前项目的reactor中,所以我们不能排除不存在的模块。

mvn clean -pl -no-existing-module 

目前将失败 - https://issues.apache.org/jira/browse/MNG-7033

于 2021-01-15T19:23:30.360 回答
1

2019 年是

mvn install -pl !:module1

(Windows 10 命令行)

于 2019-11-20T14:03:14.693 回答
-2

逗号分隔的模块名称用双引号括起来。例如::

mvn install -pl "!Module1, !Module2" 
于 2018-10-03T07:50:52.120 回答