私は最近、Maven Enforcer Pluginを使用して、すべての POM がプロパティを定義することを義務付けましたfoo.bar
。私はこのステートメントを会社の POM に入れ、それが私の子プロジェクトに適用されると想定しました。
がっかりしたことに (驚きではありませんが)、この規則は私の会社の POM にも適用されていました。その結果、プレースホルダーfoo.bar
プロパティを忠実に定義し、完了したと思いました。
残念ながら、すべての子プロジェクトはこのプロパティを継承するため、エンフォーサー テストに合格します。子供たちがこのプロパティを明示的に定義したのか、単に意味のない値を継承したのかを判断できないままです。誰でも次のいずれかの方法を提案できますか:
この (特定の) ルールが私の会社の POM に適用されないようにします。また
プレースホルダー プロパティが子プロジェクトに継承されないようにします。また
私の問題を別の方法で解決しますか?
参考までに、私のエンフォーサ ルールの定義を以下に示します。このスニペットは、私の会社の POM からのものです。
<!-- Enforce good behaviour in child POMs -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>enforce-good-behaviour</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireProperty>
<property>foo.bar</property>
<message>NAUGHTY!</message>
<regex>.+</regex>
<regexMessage>The property must contain at least one character.</regexMessage>
</requireProperty>
</rules>
</configuration>
</execution>
</executions>
</plugin>
私の目標は、このプロパティ値を SCM タグ付け命令の一部として自動的に使用することでした。私の会社の POM には、子プロジェクトの適切なタグ付けスキームを定義する次のスニペットがあります。
<!-- Ensure we use a consistent tagging scheme for releases -->
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagNameFormat>a.b.c.${foo.bar}</tagNameFormat>
<useReleaseProfile>false</useReleaseProfile>
</configuration>
</plugin>