Supposons que je possède un module A:jar
, dont l'ensemble de dépendances et d'exécution dépend de la version du JDK. Dans mon exemple, j'ai un pre-jdk6-profile
pour API JAXB: avant JDK 1.6.0, j'ai besoin d'inclure jaxb-api-nnn.jar
comme une dépendance de compilation. Ce profil est placé à A.pom
. J'ai également le module B:war
, qui dépend de A:jar
. Je veux être en mesure d'activer ce profil sur un serveur de construction pour créer le livrable JDK 1.5.x. Lorsque j'exécute Maven avec un profil donné activé, je reçois le message:Comment activer un profil Maven dans un module dépendant?
mvn -Ppre-jdk6-profile -o install
[WARNING]
Profile with id: 'pre-jdk6-profile' has not been activated.
et jaxb-api-nnn.jar
manque dans B.war
résultant. Toutefois, si j'active ce profil lors de la construction à partir du parent pom.xml
, tout est OK. Cela signifie que les profils ne sont pas hérités des dépendances, et le pom.xml multi-module parent a pu tout construire correctement car il semble que tous les profils sont fusionnés dans le réacteur.
Le décalage du profil vers le pom parent rend les choses plus difficiles, car les dépendances sont appliquées à tous les autres projets (par exemple, C:ear
). Existe-t-il de bonnes solutions pour cette tâche, à savoir, si un module A
dépend du module B
, alors toutes les dépendances de compilation et d'exécution qui sont activées par un profil sont correctement gérées?
Le profil dans le projet A:jar
suit:
<project ...>
<artifactId>A</artifactId>
<packaging>jar</packaging>
...
<parent>
<artifactId>P</artifactId>
...
</parent>
<profiles>
<profile>
<id>pre-jdk6-profile</id>
<activation>
<jdk>(,1.6.0)</jdk>
</activation>
<dependencies>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
...
</project>
Dois-je ajouter la 2ème partie au module 'A' ou au module' B'? –
les deux. Dans le JAR avec ' fourni ', dans la webapp avec la portée par défaut. Mais dans les deux à l'intérieur du profil. –
Je crois, je peux utiliser seulement (b) si je cours construit sur Hudson.Merci pour vos conseils. –