Определите список модулей, которые должны быть собраны в многопроектной сборке Maven

Я хотел бы использовать опцию Maven -pl, чтобы определить, какие конкретные модули должны быть включены в реактор. Опция работает, если указан список путей модуля. К сожалению, предоставление artifactIds модуля не работает вообще. Документы Sonatype 'Maven: The Complete Reference' используют мультипроектный пример, где имена каталогов совпадают с artifactIds:

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

Можно ли использовать опцию -pl с artifactId?

1 ответ

Решение

Да, это возможно. Взгляни на 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

mvn кажется, взять список, который вы предоставляете -pl к сердцу и не строить никаких зависимостей автоматически.

Итак, в дополнение к ответу Джо: если проект / модуль, который вы пытаетесь построить, зависит от других модулей, вы можете задать mvn строить их также с -am,

-am,--also-make
       If project list is specified, also build projects required by the list

Если указан список проектов = если -pl опция используется

Вот примеры:

  • mvn -pl maven-core -am
  • mvn -pl :maven-core -am
  • mvn -pl org.apache.maven:maven-core -am
Другие вопросы по тегам