#maven
#maven
Вопрос:
У меня есть многомодульная сборка maven со структурой, подобной
a/
pom.xml
b/
pom.xml
c/
pom.mxl
d/pom.xml
e/
pom.xml
Некоторые из плагинов для анализа работают медленно, поэтому я хотел бы пропустить их при запуске сборки нескольких модулей ( cd a; mvn install
), но не одного модуля ( cd a/b/c; mvn install
). В сборке с одним модулем я мог бы просмотреть сгенерированные предупреждения и исправить их, но при сборке с несколькими модулями я не буду на них смотреть, поскольку полная сборка буквально создает десятки модулей.
Есть ли способ определить, создаю ли я несколько модулей из сборки?
Я надеюсь, что что-то вроде reactor.build
определено во всех модулях при запуске из /a
, но не определено при запуске из /a/b/c
.
Все, что я смог найти, когда я погуглил, это то, как настроить многомодульную сборку или создать только некоторые проекты, а это не то, что я ищу.
Цели
Я понимаю цикл сборки maven. Я хочу иметь возможность добавить что-то подобное в мой корневой pom pom:
<properties>
<skipSlowPlugin>${multi.project.build}</skipSlowPlugin>
<properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.slow</groupId>
<artifactId>analysis-tool</artifactId>
<version>1.0.0</version>
<configuration>
<skip>${skipSlowPlugin}</skip>
</configuration>
</plugin>
</plugin>
</pluginManagement>
</build>
Если я запущу сборку из /a/b/c
, multi.project.build
будет false и плагин запустится. Если я запущу из /a
или /a/b
, то multi.project.build
будет true, и плагин не будет запущен.
В любом случае я хочу собрать все в текущем каталоге, поэтому --pm
и --am
не имеют значения.
Комментарии:
1. О каких плагинах анализа вы говорите? Вы создаете многомодульную сборку из корня… Если вам нравится создавать только ее части: лучше всего сначала выполнить
mvn clean install
из root, и теперь вы можете использоватьmvn -pl a/b clean package
также полезные--also-make
, что означает создание списка проектов, необходимых для данного списка, кроме того--also-make-dependents
, который создает список проектов, которые зависят от данного списка проектов..2. Наиболее важным является то, что мы обнаруживаем ошибки в исходном коде.
-pl
и--also-make
решить другую проблему. Я знаю, как просто скомпилироватьa/b/c
. Я хочу что-то вроде,mvn resources compile test install
когда я запускаю из/a
иmvn resource compile test spotbugs install
когда я запускаю из/a/b/c
, где это плагины, которые он запускает.3. Вы, похоже, понятия не имели, как работает жизненный цикл в Maven. Пожалуйста, прочитайте документацию maven.apache.org/guides/introduction /…
4. @khmarbaise, несмотря на его невежество, это совершенно правильный вопрос. Я хочу запустить dsm-maven-plugin, который пока не поддерживает многомодульную сборку. Я не вижу никакого правила принудительного исполнения, которое обнаружило бы и предотвратило запуск этого, если бы это была многомодульная сборка