web-dev-qa-db-fra.com

Comment générer des dépendances de module dans MANIFEST.MF pour JBoss AS 7 avec maven?

Dans JBoss AS 7, une application Web qui dépend des bibliothèques contenues dans l'AS, doit déclarer ces dépendances dans META-INF/MANIFEST.MF comme ceci:

Dependencies: <package-name>

Exemple:

Dependencies: org.slf4j

(Ceci est comparable à Import-Package: pour OSGi.) De plus amples informations peuvent être trouvées dans les articles sur migration depuis les anciennes versions , chargement de classe et module implicite dépendances pour les déploiements

Le projet est construit avec Maven. Toutes les dépendances incluses dans l'AS sont déclarées avec la portée "fournie".

Maintenant la question

Existe-t-il un moyen simple de créer automatiquement cette liste de dépendances avec Maven?

Seules les dépendances avec la portée déclarée "fournie" doivent être incluses, car toutes les autres sont déjà incluses dans le WAR.

28
migu

Ces dépendances sont déclarées par des noms auxquels les artefacts maven n'ont aucun mappage. Vous pourriez probablement garder groupId en synchronisation avec les noms des modules jboss mais je ne sais pas si c'est une bonne idée. Et je ne pense toujours à aucune solution automatisée.

Mais il y a un endroit où vous pouvez gérer la configuration à la main, comme décrit dans l'une des sources que vous avez fournies dans votre question:

   <build>
       ...
       <plugins>
         <plugin>
           <groupId>org.Apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
           <configuration>
              <archive>
                 <manifestEntries>
                    <Dependencies>org.slf4j</Dependencies>
                 </manifestEntries>  
              </archive>
           </configuration>
         </plugin>   
       </plugins>
    </build>

J'espère que quelqu'un propose un plugin pour le rendre moins lourd.

27
Mike Minicki

Ce code ajoute automatiquement toutes vos dépendances de compilation dans votre MANIFEST.MF

<plugin>
   <groupId>org.Apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <version>2.4</version>
   <configuration>
      <archive>
         <manifest>
            <addClasspath>true</addClasspath>
         </manifest>
      </archive>
   </configuration>
</plugin>

plus d'informations ici: http://maven.Apache.org/plugins/maven-war-plugin/examples/war-manifest-guide.html

1
Jérome Pieret