如何使用命令行从Maven构建中排除某些模块

时间:2012-11-07 09:12:53

标签: maven

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

以下是一些持续执行此操作的方法:

How to exclude a module from a Maven reactor build?

我想从shell开始,或者至少不修改poms,我不允许更改。

7 个答案:

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

测试:

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

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

mvn clean -pl -no-existing-module 

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

答案 5 :(得分:0)

在2019年是

mvn install -pl !:module1

(Windows 10 cmd)

答案 6 :(得分:-2)

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

mvn install -pl "!Module1, !Module2"