Как получить значение git SHA1 в поле «Реализация-версия» в манифесте для проекта Maven? - PullRequest
7 голосов
/ 25 января 2012

Мы используем git и maven и logback.

Это означает, что трассировки стека в журнале показывают версию-реализацию jar-файла, содержащего каждую строку в трассировке стека (см. Пример http://logback.qos.ch/reasonsToSwitch.html#packagingData).

Так что, если мы можем упаковать SHA1 текущей сборки в это поле в манифесте создаваемого артефакта, очень легко найти точный источник из git, который сгенерировал артефакт, содержащий эту отдельную строку в источнике. 1007 *

В соответствии с http://maven.apache.org/shared/maven-archiver/examples/manifestEntries.html способ сделать это состоит в том, чтобы иметь в строке maven-jar-plugin pom линию <key>value</key>. В моем случае это будет означать

<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]

Учитывая, что я могу получить SHA1 из https://github.com/koraktor/mavanagaiata как мне правильно установить это значение в файле MANIFEST.MF?

1 Ответ

12 голосов
/ 25 января 2012

Убедитесь, что <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>
...