我们有一个公司母公司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配置文件的激活,但是这对我来说似乎很奇怪……真的很感谢任何帮助!
答案 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
。