3

POM内でmavenに数値(例:ビルド番号)を埋め込む方法はありますか? 私はトピックをグーグルで検索してきましたが、まだ何も思いつきません。

私のユースケースは次のとおりです。Maven ビルド プロセスには、生成される WAR の名前の一部として含める必要がある Jenkins を介してビルド番号が提供されます。したがって、ビルド番号として 12 を指定すると、WAR ファイル名は myWar##000012.war になります。名前の ##000012 の部分は、Tomcat が使用するバージョン識別子です。

4

5 に答える 5

1

最も簡単な解決策は、ビルドにスクリプト言語を埋め込むことです。たとえば、Groovy でbuildNumberプロパティがある場合:

   <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>groovy-maven-plugin</artifactId>
    <version>1.5</version>
    <executions>
     <execution>
     <phase>validate</phase>
     <goals><goal>execute</goal></goals>
     <configuration>
      <source>
       project.properties['nameSuffix'] = "##" + String.format("%06d", project.properties['buildNumber'].toLong());
      </source>
     </configuration>
     </execution>
    </executions>
   </plugin>

その後、nameSuffixプロパティを使用して最終的な名前を定義できます。

または、In Maven で提案されているように、実行時にプロパティ値を動的に構築するにはどうすればよいですか? build-helper:regex-property、文字列を変換するために使用します。

于 2013-08-08T13:39:39.577 に答える
0

@jwmajors81 の提案に基づいて、特定の理由でメジャー バージョンを埋め込む必要がありました...

すでに build-helper-maven-plugin を使用していたので、ビルド ヘルパーの parse-version ゴールを使用してメジャー バージョンを取得するのは簡単です。(必要な文字は 3 文字だけでした):

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.8</version>
            <executions>
                <execution>
                    <id>parse-version</id>
                    <goals>
                        <goal>parse-version</goal>
                    </goals>
                </execution>
                <execution>
                    <id>stage1--padNumber</id>
                    <goals>
                        <goal>regex-property</goal>
                    </goals>
                    <configuration>
                        <name>build.env.version.padded</name>
                        <value>${parsedVersion.majorVersion}</value>
                        <regex>^([\d]{0,})$</regex>
                        <replacement>00$1</replacement>
                        <failIfNoMatch>false</failIfNoMatch>
                        <failOnError>false</failOnError>
                    </configuration>
                </execution>
                <execution>
                    <id>stage2--leftTrimToXcharacters</id>
                    <goals>
                        <goal>regex-property</goal>
                    </goals>
                    <configuration>
                        <name>build.env.version.padded</name>
                        <value>${build.env.version.padded}</value>
                        <regex>^([\d]*)([\d]{3})$</regex>
                        <replacement>$2</replacement>
                        <failIfNoMatch>false</failIfNoMatch>
                        <failOnError>false</failOnError>
                    </configuration>
                </execution>
            </executions>
        </plugin>
于 2013-12-11T15:31:09.940 に答える
0

@Joeの提案に基づいて、build-helper-maven-pluginを調べたところ、必要なことを行う次のものを思いつくことができました。1 つのステップですべてを行う方法を特定できなかったので、2 で行っています。最初のステップでは、左側の値にゼロを埋め込みます。2 番目のステップでは、数値が 7 桁になるようにトリミングされます。${build.env.version} はパラメーターとして Maven ビルド プロセスに渡され、渡されない場合は POM ファイルでデフォルトの 0 に設定されていることに注意してください。デフォルト値を指定しないと、failOnError が false に設定されていても、ビルドは失敗します。

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.8</version>
    <executions>
      <execution>
        <id>stage1--padNumber</id>
        <goals>
          <goal>regex-property</goal>
        </goals>
        <configuration>
          <name>build.env.version.padded</name>
          <value>${build.env.version}</value>
          <regex>^([\d]{0,})$</regex>
          <replacement>000000$1</replacement>
          <failIfNoMatch>false</failIfNoMatch>
          <failOnError>false</failOnError>
        </configuration>
      </execution>
      <execution>
        <id>stage2--leftTrimToXcharacters</id>
        <goals>
          <goal>regex-property</goal>
        </goals>
        <configuration>
          <name>build.env.version.padded</name>
          <value>${build.env.version.padded}</value>
          <regex>^([\d]*)([\d]{7})$</regex>
          <replacement>$2</replacement>
          <failIfNoMatch>false</failIfNoMatch>
          <failOnError>false</failOnError>
        </configuration>
      </execution>
    </executions>
  </plugin>
于 2013-08-09T13:58:45.363 に答える
0

Maven リリースプラグインを使用してみましたか?

于 2013-08-07T20:15:51.103 に答える