0

POM ファイルのこの部分でビルド番号を生成します。

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.2</version>
        <configuration>
            <buildNumberPropertyName>project.build.number</buildNumberPropertyName>
            <timestampPropertyName>project.build.time</timestampPropertyName>
            <format>{0,date,yyyyMMddHHmmss}</format>
            <items>
                <item>timestamp</item>
            </items>
            <doCheck>false</doCheck>
            <doUpdate>false</doUpdate>
        </configuration>
        <executions>
            <execution>
                <phase>validate</phase>
                <goals>
                    <goal>create</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

その後、finalName を次のように設定します。

    <finalName>
        ${project.artifactId}-${project.version}.${project.build.number}
    </finalName>

また、webstart-maven-plugin を使用してプロジェクトを webstart-app として生成しています。webstart-plugin は zip ファイルを生成します。そして、1 つの小さな詳細を除いて、すべて正常に動作します。

ビルド時に次の出力があります。

[buildnumber:create]
Storing buildNumber: 20130312133207 at timestamp: 1363091527664
Building jar: D:\projects\myProject\target\myProject-1.0.20130312133207.jar
Building jar: D:\projects\myProject\target\myProject-1.0.20130312133207-sources.jar
Building jar: D:\projects\myProject\target\myProject-1.0.20130312133207-javadoc.jar
Building zip: D:\projects\myProject\target\myProject-1.0.${project.build.number}.zip

${project.build.number} が zip ファイルで置き換えられないのはなぜですか? jarではなくzipだからでしょうか?なぜバージョンが置き換えられるのですか?POM に zip ファイルの buildNumber を置き換えるように指示するにはどうすればよいですか?

$project.build.number の代わりにデフォルトの $buildNumber を使用しようとしましたが、これも機能しません。

編集: 2 つのプラグインのさまざまなフェーズを既に試しましたが、これまでのところ組み合わせは機能しませんでした。

Edit2: 興味深い場合は、Webstart-Plugin-part がどのように見えるか、コードを次に示します。

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>webstart-maven-plugin</artifactId>
            <version>1.0-beta-3</version>
            <executions>
                <execution>
                    <phase>install</phase>
                    <goals>
                        <goal>jnlp</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>

                <!-- JNLP generation -->
                <jnlp>
                    <!-- default values -->
                    <inputTemplateResourcePath>${project.basedir}</inputTemplateResourcePath>
                    <inputTemplate>src/main/jnlp/app.vm</inputTemplate> <!-- relative to inputTemplateResourcePath -->
                    <outputFile>app.jnlp</outputFile> <!-- defaults to launch.jnlp -->

                    <!-- used to automatically identify the jar containing the main class. -->
                    <!-- this is perhaps going to change -->
                    <mainClass>com.mycompany.myproject.App</mainClass>
                </jnlp>
                <sign>
                    <keystore>${basedir}/keystore</keystore>
                    <keypass>password</keypass>  <!-- we need to override passwords easily from the command line. ${keypass} -->
                    <storepass>password</storepass> <!-- ${storepass} -->
                    <!--storetype>fillme</storetype-->
                    <alias>MyProjectWebstart</alias>

                    <!--validity>fillme</validity-->

                    <!-- only required for generating the keystore -->
                    <dnameCn>MyProjectWebstart</dnameCn>
                    <dnameOu>MyName</dnameOu>
                    <dnameO>MyCompany</dnameO>
                    <dnameL>MyTown</dnameL>
                    <dnameSt>MyState</dnameSt>
                    <dnameC>MyCountry</dnameC>

                    <verify>true</verify> <!-- verify that the signing operation succeeded -->

                    <!-- KEYSTORE MANAGEMENT -->
                    <keystoreConfig>
                        <delete>true</delete> <!-- delete the keystore -->
                        <gen>true</gen>       <!-- optional shortcut to generate the store. -->
                    </keystoreConfig>
                </sign>
            </configuration>
        </plugin>

そこでの例のコードを使用しました: Webstart Maven Plugin サンプル アプリケーションを探しています。

4

1 に答える 1

0

buildNumberPropertyName パラメーターを project.build.ANYTHING.. に設定しないでください。 ${project.XXX} で始まる式は MavenProject オブジェクトに基づいて解決されるため、${project.build.date} でゲッター getBuild() があると言います正しくないゲッター getDate() を持つオブジェクトを返します。

buildNumberPropertyName および timestampPropertyName パラメータに別の名前を付けるだけです。myBuildNumber と myTimestamp を変更し、それに応じて残りの pom を変更します

于 2013-04-11T05:52:35.770 に答える