いくつかのテストの後、次の結論に達しました。
- '\' は '$' 記号の後に続く必要があることを示すドキュメントが表示されませんでした (おそらく、私にそれを指摘してください)。私の知る限りキャラ
- 表示されるエラーは、構成
mvn install
プロパティの値が<failIfNoMatch>
無関係です
<failIfNoMatch>
システム プロパティが存在するが、期待される形式ではない場合、失敗する必要がありますか? プロパティがまったく存在しない場合はカバーしません。ただし、この目的のために、maven にはいわゆるプロファイルが存在し、これらはさまざまな方法でアクティブ化できます。そのうちの 1 つはシステム プロパティの存在です。
だから、以下は私のために仕事をします:
<?xml version="1.0" encoding="UTF-8"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>sample</groupId>
<artifactId>sample</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<profiles>
<profile>
<activation>
<property>
<name>someversion</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>regex-property</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>someversion.parsed</name>
<value>${someversion}</value>
<regex>(.*)[\._](.*)</regex>
<!-- <regex>notmatched</regex>-->
<replacement>$1$2</replacement>
<failIfNoMatch>false</failIfNoMatch>
<!--<failIfNoMatch>true</failIfNoMatch>-->
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>******** Displaying value of property ********</echo>
<echo>${someversion.parsed}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
maven-antrun-plugin
デバッグ出力を表示するためだけにあることに注意してください。
今いくつかのテスト:
mvn install -Dsomeversion=1.3
...
main:
[echo] ******** Displaying value of property ********
[echo] 13
[INFO] Executed tasks
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
...
システム プロパティ バージョンがない場合:
mvn install
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
...
pom.xml に特別なプロファイルを含めないと、次の出力が得られます。
mvn install
...
INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] One or more required plugin parameters are invalid/missing for 'build-helper:regex-property'
[0] Inside the definition for plugin 'build-helper-maven-plugin' specify the following:
<configuration>
...
<value>VALUE</value>
</configuration>
-OR-
on the command line, specify: '-Dsomeversion=VALUE'
...
そして、私が自分のソリューション(現在コメントアウトされている)で使用する場合に備えて、物事を完全にするため<regex>notmatched</regex>
に<failIfNoMatch>true</failIfNoMatch>
:
mvn install -Dsomeversion=1.3
...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - sample:sample:pom:1.0.0-SNAPSHOT
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [build-helper:regex-property {execution: regex-property}]
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] No match to regex 'notmatched' found in '1.3'.
[INFO] ------------------------------------------------------------------------
...
最後の 2 つのエラーは異なることに注意してください。1 つはプロパティの欠落によるもので、もう 1 つは一致しない正規表現によるものです。
要約すると、build-helper-maven-plugin
期待どおりに機能すると思います。