3

要件は、値からドットを削除するために、システム プロパティを正規表現で解析する必要があることです。

実行例: mvn install -Dsomeversion=1.3

pom.xml 構成は次のとおりです。

<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>
    <replacement>$1$2</replacement>
    <failIfNoMatch>false</failIfNoMatch>
   </configuration>
  </execution>
 </executions>
</plugin>

プラグインのドキュメントに基づいて、バックスラッシュはドル記号の後にある必要があります<value>

問題は次のとおりです。

  1. バックスラッシュがある場合、システム プロパティは解析されません
  2. バックスラッシュを削除すると:
    a) システム プロパティが正常に解析される
    b) 「mvn install」を実行すると、設定したにもかかわらず、パラメータ「値」が見つからないか正しくないというエラーが表示される<failIfNoMatch>false</failIfNoMatch>

どんなフィードバックでも大歓迎です

前もって感謝します

4

1 に答える 1

7

いくつかのテストの後、次の結論に達しました。

  • '\' は '$' 記号の後に続く必要があることを示すドキュメントが表示されませんでした (おそらく、私にそれを指摘してください)。私の知る限りキャラ
  • 表示されるエラーは、構成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期待どおりに機能すると思います。

于 2013-07-09T06:34:59.677 に答える