2012-01-25 9 views
6

Utilizziamo git and maven e logback.Come ottenere il valore git SHA1 nel campo Implementation-Version nel manifest per un progetto Maven?

Ciò significa che le tracce di stack nel registro mostrano la versione di implementazione del jar contenente ogni riga nello stack trace (vedere http://logback.qos.ch/reasonsToSwitch.html#packagingData per un esempio).

Quindi se riusciamo a confezionare lo SHA1 della build corrente in quel campo nel manifest del manufatto che si sta costruendo, è molto facile individuare l'origine esatta da git che ha generato l'artefatto che contiene quella singola linea nell'origine.

Secondo http://maven.apache.org/shared/maven-archiver/examples/manifestEntries.html il modo per fare ciò è di avere una riga <key>value</key> nella parte di maven-jar-plugin del pom. Ciò nel mio caso significa

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

che si traduce in

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

Dato che posso ottenere lo SHA1 da https://github.com/koraktor/mavanagaiata come faccio a questo correttamente impostate nel file MANIFEST.MF?

risposta

11

Verificare che lo <Implementation-Version> sia all'interno di un elemento <manifestEntries> e non un elemento <manifest>.

Esempio:

<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> 
+0

Ok, questo funziona. Pensavo di aver provato anche quelli, oh bene. Grazie. –

+0

Die Versiosnummer von mavanagaiata ist mittlerweile 0.7.2. Dies hat einige kleinere Problema bei mir beseitigt (git-Archiv finden ecc.) – kdoteu

Problemi correlati