この:
<requiredProperties>
<requiredProperty key=.. >
<defaultValue/>
<validationRegex/>
</requiredProperty>
</requiredProperties>
... は(デフォルトおよび検証で)必要なプロパティを定義する方法です。しかし、IIRCはarchetypeプラグインのv3.0.0で導入されました。おそらくあなたは以前のバージョンを使用しています。
編集1:この質問に対して「validationRegexはartifactIdとgroupIdに適用できます」はい、できます。これはの任意のエントリに適用できますが、この注意点が適用されます。validationRegex
はコマンドラインで提供される入力に対してのみ機能するため、defaultValue
を指定するか、コマンドラインパラメータ(-DgroupId=...
,)のサイドステップで値を定義します。ここでの具体例は、archetype-descriptor.xml
で以下requiredProperties
与えられ、次のとおり
<requiredProperties>
<requiredProperty key="artifactId">
<validationRegex>^[a-z]*$</validationRegex>
</requiredProperty>
<requiredProperty key="groupId">
<defaultValue>COM.XYZ.PQR</defaultValue>
<validationRegex>^[a-z]*$</validationRegex>
</requiredProperty>
</requiredProperties>
次のコマンド
:
mvn archetype:generate -DarchetypeGroupId=... -DarchetypeArtifactId=... -DarchetypeVersion=... -DgroupId=com.foo.bar
は
com.foo.bar
をのgroupIdに使用され、ユーザがそうようなたartifactIdを供給するように要求することになります
プロパティ 'username'の値を定義します(式 '^ [az] * $'に一致する必要があります):Whatever
値が一致しません。もう一度やり直してください:whatever
は...プロパティの値を定義します
(一種の)これまでのところは良いです。
しかし、次のコマンドmvn archetype:generate -DarchetypeGroupId=... -DarchetypeArtifactId=... -DarchetypeVersion=... -DartifactId=whatever
は、validationRegex
には準拠していませんが、COM.XYZ.PQR
がgroupIdに使用されます。
同様に、次のコマンドmvn archetype:generate -DarchetypeGroupId=... -DarchetypeArtifactId=... -DarchetypeVersion=... -DartifactId=WHATEVER
は、がgroupIdに使用され、WHATEVER
がvalidationRegex
に準拠していなくてもartifactIdに使用されます。
したがって、要約する:任意requiredPropertyためvalidationRegex
作品(予約済みプロパティそのかどうか - 例えばたartifactIdよう - または特注プロパティ)のデフォルト値を設定する対話的ひいては設けられ、それは値のみに適用されなく、またはコマンドラインパラメータを介して値を入力すると、検証のステップが実行されます。
注:を使用しても、Maven Enforcer PluginのrequireProperty ruleを使用することを検討することをお勧めします。これは、プロジェクトの作成にarchetypeを使用した後で変更することができるためです。ドキュメントから:
このルールは、宣言されたプロパティが設定されているかどうかを強制し、オプションで正規表現に対して評価します。ここで
は例です:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>enforce-property</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireProperty>
<property>project.artifactId</property>
<message>"Project artifactId must match ...some naming convention..."</message>
<regex>...naming convention regex...</regex>
<regexMessage>"Project artifactId must ..."</regexMessage>
</requireProperty>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
http://www.eclipse.org/m2e/documentation/release-notes-17.htmlはのM2eはまだそう、のmaven-原型-プラグイン2.4を使用していることを示していますrequiredPropertiesのregex検証はありません。その部分は解決されます。 –