1

次の問題に直面しています。MercurialハッシュをJavaプロジェクトに統合したいと思います。それを生成ファイル(debianパッケージ)の名前に統合したいと思います。また、mercurialハッシュにアクセスできるversion.propertiesのようなファイルも必要です。

似たような質問がたくさんあることは知っていますが、私はそれらを読み通し、どういうわけか私の問題を解決することができません。

Mercurialハッシュを取得するためにbuildnumber-maven-pluginを使用します。次に、それをバージョンに統合します。実行すると、このハッシュを使用してdebianパッケージが生成されますmvn clean install。これはこれまでのところ機能しています。

<version>project-${buildNumber}</version>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>1.0</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>create</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

私が欠けているのはbuildNumber.properties、プラグインによって自動的に生成されるはずのファイルです。どこにも見つかりません。そこで、自分のプロパティファイルを作成することにしました。で作成src/main/resourcesし、pom.xmlにプロパティを追加しました。スニペットは次のとおりです。

pom.xml

<properties>
    <merc.version>${buildNumber}</merc.version>
</properties>

version.properties

version=${buildNumber}
version2=${merc.version}

その後mvn clean install、cmdlから実行します。しかし、コマンドラインからを使用してversion.propertiesファイルを開くとless、上記のようにコンテンツがプレーンテキストとして表示されます。プロパティは実際のコンテンツに置き換えられません。しか見えないversion=${buildNumber}、など。

また、mavenによって生成されるはずのファイル「pom.properties」には、1か月前の非常に古いバージョンが含まれています。私はそれを更新するために何をすべきか理解していません。

誰かが私を助けてくれるなら、それは素晴らしいことです:-)ありがとう!

4

1 に答える 1

2

その場合、フィルタリングしたくないリソースのフィルタリングを有効にする必要があります。これは次のことを意味します。

<build>
 <resources>
    <resource>
      <directory>src/main/resources/version/</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
...
</build>

version.properties ファイルが src/main/resources/version/ の下に正しく配置されている場合、ビルド プロセス中にフィルター処理され、target/class/ にコピーされます。プレースホルダーに置き換えられる必要があります。

于 2012-03-15T09:20:23.053 に答える