20

svn.revisionをビルド番号としてプロジェクトバージョンに追加しようとしていますが、追加できないようです。私のjarには正しい名前のdurinパッケージがありますが、ローカルリポジトリにインストールされているのは、バージョンが設定されたときに${buildNumber}が未定義であるかどうかのようです。

foo-1.0.0-SNAPSHOT- 304の代わりにfoo-1.0.0-SNAPSHOT- ${buildNumber}を取得します

私が間違っていることや、プロジェクトバージョンにリビジョンを追加することは悪い考えですか?助けてくれてありがとう。

<project>
  ...
  <version>1.0.0-${release.identifier}-${buildNumber}</version>
  <properties>
    <release.identifier>SNAPSHOT</release.identifier>
  </properties>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>useLastCommittedRevision</id>
            <goals>
              <goal>create</goal>
            </goals>
            <configuration>
              <useLastCommittedRevision>true</useLastCommittedRevision>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  ...
</project>
4

2 に答える 2

11

この問題には次の 2 つの部分があります。

  1. buildNumber解決される前にバージョンに設定しようとしているので${buildNumber}、解決された値ではなく常になります。

    バージョンを動的に変更しようとする代わりに、ビルドbuildNumberの要素に を設定する必要があります。finalNameこれにより、意図した名前のアーティファクトがローカル リポジトリに作成されます。

  2. インストール プラグインはこれを無視しfinalNameてデプロイし1.0.0-SNAPSHOTますが、対処方法がわかりません。以下のbuildNumberようにプラグインを設定すると、マニフェストに が追加されます。

    したがって、構成は次のようになります。

    <version>1.0.0-${release.identifier}</version>
    ...
    <build>
      <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
      ...
    </build>
    

プロジェクトでビルド番号を使用することは避けSNAPSHOTます。

Maven は、SNAPSHOTアクティブな開発中の不安定なプロジェクトを示すキーワードを提供します。そのため、依存関係のあるバージョンでプロジェクトを参照するとSNAPSHOT、Maven は更新を自動的にチェックし、依存関係を同期させます。

その後、そのバージョンの最後にビルド番号を追加すると、依存関係を手動で更新する必要があるため、SNAPSHOTサフィックスを使用する利点が失われます。

個人的には可能な限りビルド番号の使用を避けています。beta-2プロジェクトを更新する必要がある場合は、バージョン番号を上げるか、またはのような接尾辞を使用しますRC2。でリビジョンを追跡する必要がある場合はSNAPSHOT、マニフェストに追加して、ビルドがどこで発生したかを確認できるようにすることをお勧めしますが、標準のSNAPSHOTサフィックスを使用して、Maven がバージョンを正常に解決できるようにします。以下の構成は、リビジョンをマニフェストに追加する方法を示しています。

設定に関する限り、SCM URL が正しく設定されていれば問題ないように見えます。POM に SCM 構成がない場合、それが問題である可能性があります。

-Xプロパティを設定していない理由を示すプラグインからの出力を実行して確認できますか?

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>buildnumber-maven-plugin</artifactId>
  <version>0.9.4</version>
  <executions>
    <execution>
      <id>useLastCommittedRevision</id>
      <phase>validate</phase>
      <goals>
        <goal>create</goal>
      </goals>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <archive>
      <manifest>
        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
      </manifest>
      <manifestEntries>
        <Implementation-Build>${buildNumber}</Implementation-Build>
      </manifestEntries>
    </archive>
  </configuration>
</plugin>
于 2009-08-08T08:39:37.763 に答える