Maven个人资料处于活动状态,但什么也没做-为什么?

时间:2019-02-28 09:22:30

标签: maven maven-profiles visualrules

我们有一个公司母公司POM,它定义了项目的构建方式。我们还购买了需要完全独立的构建和完全独立的插件的产品(可视化规则)。

因此,自然的解决方案是为此使用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>

(如果有人对只跳过父项目的构建有更好的解决方案,请随时发表评论...)

因此,在命令行上激活不起作用。

下一个可能性:由现有文件激活:这些模块在src/main/resources/中具有特定于Visual Rules的文件-当然,父项目没有任何Visual Rules文件。这意味着我可以使用以下方法在父项目中激活配置文件:

<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 :(得分:0)

看起来像用相同的ID定义配置文件,并且激活覆盖在公司母公司POM中。而且由于该模块中的配置文件不包含任何内容,因此该配置文件显示为活动状态,但不会启动任何插件。

所以,最后我做了以下事情:

在公司母公司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>

因此,每个想要激活此配置文件的模块都需要在其根目录(其POM文件旁边)中具有一个伪文件build-visual-rule