2011-04-25 2 views

Répondre

29

Compris à l'aide du plugin maven-war. Voir la configuration ci-dessous:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <configuration> 
     <archive> 
      <manifestEntries> 
       <version>${project.version}</version> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 
+0

Si vous souhaitez lire ces informations de version via l'URL Web, par exemple 'http: // example.com/versioninfo.txt', vous pouvez filtrer un modèle' versioninfo.txt', qui contient votre projet '$ { .version} ', et [inclure le fichier de version dans la guerre] (http://www.taringamberini.com/en/howto/java/2015/including-release-info-into-war/) en utilisant le' maven -war-plugin'. – taringamberini

-1

Mettez ${project.version} dans votre fichier manifest.mf où vous voulez que la version soit. Pour que cela fonctionne, je crois que vous avez besoin du plugin de ressources afin que manven puisse «filtrer» les ressources telles qu'elles sont incluses dans votre fichier war.

+0

Mais le fichier manifeste n'est pas une ressource. Il est généré au moment de la construction, correct? S'il est généré au moment de la construction, il ne sera pas traité en tant que ressource. Suis-je mal comprendre quelque chose? –

+0

@Matthew il peut être une ressource, mais c'est une approche incorrecte. Vous avez raison, le fichier est généré à la volée par maven-war-plugin. Votre réponse ci-dessous est correcte. – yegor256

17

Ou vous pouvez utiliser les addDefaultImplementationEntries ou addDefaultSpecificationEntries drapeaux qui ajoutera plusieurs entrées dont la propriété project.version.

addDefaultImplementationEntries

Implementation-Title: ${project.name} 
Implementation-Version: ${project.version} 
Implementation-Vendor-Id: ${project.groupId} 
Implementation-Vendor: ${project.organization.name} 
Implementation-URL: ${project.url} 

addDefaultSpecificationEntries

Specification-Title: ${project.name} 
Specification-Version: ${project.version} 
Specification-Vendor: ${project.organization.name} 

Valeur par défaut pour les deux est faux. Si une propriété n'est pas définie (par exemple project.organization.name), cette ligne sera exclue du manifeste.

Cela pourrait aller dans la configuration maven-guerre-plugin comme suit:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <archive> 
      <manifest> 
       <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 
Questions connexes