【问题标题】:How to exclude Maven modules on command line如何在命令行上排除 Maven 模块
【发布时间】:2015-12-17 20:02:59
【问题描述】:

据称您可以在命令行上排除模块,例如通过运行类似的命令

mvn clean install -pl \!modulename

这似乎不起作用(不再)。

顺便说一句,包含模块也不起作用

mvn clean install -pl modulename

Maven reactor 将找不到模块并失败。

[ERROR] Could not find the selected project in the reactor: modulename -> [Help 1]

模块modulename 确实存在。在进行普通构建时,Reactor 将在构建模块列表中生成其名称。

[INFO] modulename

有没有办法在命令行中排除模块?如果可能的话,我不想更改 pom 文件。

【问题讨论】:

  • 如果您想更频繁地执行此操作,我建议您查看profiles。此外,通常打印的是来自 <name> 标记的值,而不是来自 <module>modulename</module> 的值 - 它应该是模块所在的子目录,并且与该模块的 <artifactId> 相同。
  • 什么是maven版本?我猜是 3.x 吗?
  • 试试mvn clean install -pl :modulename-pl '!:modulename'
  • 你也可以使用 --non-recursive 排除所有模块

标签: maven


【解决方案1】:

假设在你的父 pom.xml 中,你的模块结构是这样的:

如果我想排除模块“core”和“app1”,命令是:

mvn -pl '!core,!app1' clean install

所以带有 -pl 标志的最终结果是:

注意:

将来自父 pom.xml 的模块名称(如上)放入子模块中,而不是 <name>

将 -pl 标志放在“全新安装”之前。

此外,分隔模块名称的每个逗号之间不应有空格。

这是没有设置 -pl 标志的构建的样子:

【讨论】:

  • 我必须从模块名称中删除引号才能使其正常工作。 mvn -pl !core,!app1 clean install
【解决方案2】:

如果你有一个模块名为:app-server,那么你可以试试这个:clean install -pl !app-server.--

For learning more

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多