Профиль Maven активен, но ничего не делает - почему? - PullRequest
0 голосов
/ 28 февраля 2019

У нас есть корпоративный родительский POM, который определяет, как создаются проекты.Мы также приобрели продукт (Visual Rules), который требует совершенно отдельной сборки с полностью отдельными плагинами.

Итак, естественное решение - использовать для этого профиль Maven.Однако плагины Visual Rules не проверяют, выполняются ли они для POM или для модуля.Это означает, что простая активация профиля (-Pvisual-rules в моем случае) приведет к сбою сборки, так как плагины ищут определенные файлы, которых нет в родительском проекте, только в модулях.

профиль в корпоративном родительском POM выглядит следующим образом:

<profile>
  <id>visual-rules</id>
  <build>
    <plugins>
      <plugin>
        <groupId>de.visualrules.builder</groupId>
        <artifactId>visualrules-validation-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>validate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      ...and other Visual Rules plugins
    </plugins>
  </build>
</profile>

(Если у кого-то есть лучшее решение о том, как пропустить сборку только для родительского проекта, не стесняйтесь комментировать ...)

Итак, активация в командной строке не работает.

Следующая возможность: активировать с помощью существующего файла: модули имеют специальные файлы Visual Rules в src/main/resources/ - и, конечно, родительский проект неУ меня нет файлов визуальных правил.Это означает, что я могу активировать профиль в родительском проекте, используя это:

<profiles>
  <profile>
    <id>visual-rules</id>
    <activation>
      <file>
        <exists>src/main/resources</exists>
      </file>
    </activation>
  </profile>
</profiles>

Используя mvn help:active-profiles clean package Теперь я получаю следующий вывод:

10:10:31.788 [INFO] --- maven-help-plugin:3.1.0:active-profiles (default-cli) @ global-regeln ---
10:10:32.080 [INFO]
Active Profiles for Project 'foobar:global-regeln:pom:1.21.0-SNAPSHOT':

The following profiles are active:

 - default (source: external)
 - local (source: foobar:corporate-parent:1.52.0-SNAPSHOT)


Active Profiles for Project 'foobar:global-regeln-edossier-schlagwort-zu-doktyp:jar:1.21.0-SNAPSHOT':

The following profiles are active:

 - default (source: external)
 - visual-rules (source: foobar:global-regeln:1.21.0-SNAPSHOT)
 - local (source: foobar:corporate-parent:1.52.0-SNAPSHOT)


Active Profiles for Project 'foobar:global-regeln-zahlungspflichtdatum-fuer-gebuehrtyp:jar:1.21.0-SNAPSHOT':

The following profiles are active:

 - default (source: external)
 - visual-rules (source: foobar:global-regeln:1.21.0-SNAPSHOT)
 - local (source: foobar:corporate-parent:1.52.0-SNAPSHOT)


Active Profiles for Project 'foobar:global-regeln-fristberechnung:jar:1.21.0-SNAPSHOT':

The following profiles are active:

 - default (source: external)
 - visual-rules (source: foobar:global-regeln:1.21.0-SNAPSHOT)
 - local (source: foobar:corporate-parent:1.52.0-SNAPSHOT)


Active Profiles for Project 'foobar:global-regeln-terminberechnung:jar:1.21.0-SNAPSHOT':

The following profiles are active:

 - default (source: external)
 - visual-rules (source: foobar:global-regeln:1.21.0-SNAPSHOT)
 - local (source: foobar:corporate-parent:1.52.0-SNAPSHOT)

 ... Rest of the build, no Visual Rules plugin output!

Но хотя профиль visual-rulesотображается как активный, плагины в профиле не запускаются - почему?

Просто чтобы быть уверенным, я также начал сборку, используя mvn help:active-profiles clean package -Pvisual-rules, и здесь плагины были запущены и вызвали проблему, описанную выше.

10:18:50.608 [INFO] ------------------------------------------------------------------------
10:18:50.608 [INFO] Reactor Summary:
10:18:50.608 [INFO]
10:18:50.608 [INFO] Globale Regeln ..................................... FAILURE [  3.414 s]
10:18:50.608 [INFO] eDossierregeln-Schlagworte zu Dokumententypen ...... SKIPPED
10:18:50.608 [INFO] Globale Zahlungspflichtdatumberechnung-Regel ....... SKIPPED
10:18:50.608 [INFO] Globale Fristberechnung ............................ SKIPPED
10:18:50.608 [INFO] Globale Terminberechnung ........................... SKIPPED
10:18:50.608 [INFO] ------------------------------------------------------------------------
10:18:50.608 [INFO] BUILD FAILURE
10:18:50.608 [INFO] ------------------------------------------------------------------------
10:18:50.608 [INFO] Total time: 5.515 s
10:18:50.608 [INFO] Finished at: 2019-02-28T10:18:50+01:00
10:18:50.801 [INFO] Final Memory: 72M/793M
10:18:50.801 [INFO] ------------------------------------------------------------------------
10:18:50.803 [ERROR] Failed to execute goal de.visualrules.builder:visualrules-validation-maven-plugin:6.4.10:validate (default) on project global-regeln: RuleModel 'global-regeln-edossier-schlagwort-zu-doktyp' is not valid: Referenziertes Element "allgemein-regeln-fachdaten" nicht gefunden

Возможно, я не совсем понимаю активацию профиля Maven, но мне это кажется довольно странным ... Любая помощь действительно ценится!

1 Ответ

0 голосов
/ 04 марта 2019

Похоже, что определение профиля с тем же идентификатором и активацией переопределяет профиль в корпоративном родительском POM.И поскольку этот профиль в модуле не содержит ничего, профиль отображается как активный, но не запускает никаких плагинов.

Итак, в итоге я сделал следующее:

Inкорпоративный родительский POM, я изменил профиль visual-rules:

<profile>
  <id>visual-rules</id>
  <activation>
    <file>
      <!-- Every Visual Rules module must have this dummy file in the root directory. -->
      <exists>build-visual-rules</exists>
    </file>
  </activation>
  <build>
    ... Plugins etc.
  </build>
</profile>

И, таким образом, каждый модуль, который хочет активировать этот профиль, должен иметь фиктивный файл build-visual-rule в своем корневом каталоге (рядом с его POMфайл).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...