Может ли сборка maven определить, является ли она многомодульной

#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, который пока не поддерживает многомодульную сборку. Я не вижу никакого правила принудительного исполнения, которое обнаружило бы и предотвратило запуск этого, если бы это была многомодульная сборка