2014-10-17 49 views
0

我想使用Maven -pl选项来定义将哪些特定模块包含在反应器中。如果提供了模块路径列表,则该选项可用。不幸的是,提供模块的artifactIds根本不起作用。 Sonatype的“Maven的:完整参考”文件正在使用其中的目录名称匹配artifactIds多重例如:定义将在Maven多项目构建中构建的模块列表

http://books.sonatype.com/mvnref-book/reference/_using_advanced_reactor_options.html

是否有可能使用具有的artifactId -pl选项?

+1

您使用哪个maven版本?你是怎么称呼它的?你的pom文件是怎样的? – khmarbaise 2014-10-17 18:41:20

+0

供参考:[Maven by Example](http://books.sonatype.com/mvnex-book/reference/multimodule-sect-simple-parent.html):_“每个模块元素对应于simple-父/目录“._根据他们的artifactIds命名项目目录不是最好的做法吗?我不知道有任何子项目,在我们的项目中并非如此,有15个顶级项目和数百个子项目。 – 2014-10-17 19:48:20

+0

并考虑性能。必须解析_every_子目录中的POM,以检查是否适用了'artifactId' - 即使大多数不适用于某个构建。将绝对目录名限制在所需的范围内要快得多。 – 2014-10-17 19:54:53

回答

3

是的,有可能这样做。看看mvn --help

-pl,--projects <arg>     Comma-delimited list of specified 
             reactor projects to build instead 
             of all projects. A project can be 
             specified by [groupId]:artifactId 
             or by its relative path. 

请特别注意,一个artifactId没有前导groupId仍然拥有领先的冒号。

因此,例如在该artifactId相同目录名的情况下,这三条线将全部指向同一个模块中的Maven:

  • mvn -pl maven-core
  • mvn -pl :maven-core
  • mvn -pl org.apache.maven:maven-core