7

git と maven と logback を使用します。

これは、ログのスタック トレースが、スタック トレースの各行を含む jar の実装バージョンを示すことを意味します (例については、 http://logback.qos.ch/reasonsToSwitch.html#packagingDataを参照してください)。

そのため、現在のビルドの SHA1 をビルド中のアーティファクトのマニフェストのフィールドにパッケージ化できれば、ソース内の個々の行を含むアーティファクトを生成した正確なソースを git から簡単に見つけることができます。

http://maven.apache.org/shared/maven-archiver/examples/manifestEntries.htmlによると、これを行う方法<key>value</key>は、pom の maven-jar-plugin 部分に行を追加することです。これは私の場合、

<Implementation-Version>FooBar</Implementation-Version>

その結果、

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.3:jar (default-jar) on project axsFTP: Unable to parse configuration of mojo org.apache.maven.plugins:maven-jar-plugin:2.3:ja
r for parameter manifest: Cannot find setter, adder nor field in org.apache.maven.archiver.ManifestConfiguration for 'implementationVersion' -> [Help 1]

https://github.com/koraktor/mavanagaiataから SHA1 を取得できる場合、これを MANIFEST.MF ファイルで正しく設定するにはどうすればよいですか?

4

1 に答える 1

12

が要素ではなく、要素<Implementation-Version>内にあることを確認してください。<manifestEntries><manifest>

例:

  <build>
    <plugins>

      <plugin>
        <groupId>com.github.koraktor</groupId>
        <artifactId>mavanagaiata</artifactId>
        <version>0.3.1</version>
        <executions>
          <execution>
            <id>git-commit</id>
            <phase>validate</phase>
            <goals>
              <goal>commit</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <archive>
            <manifestEntries>
              <Implementation-Version>${mvngit.commit.id}</Implementation-Version>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>

    </plugins>
  </build>
于 2012-01-25T18:42:57.900 に答える