2012-06-21 1 views
1

Quelle est la meilleure façon de créer des définitions et des profils de dépendances réutilisables dans maven? Je souhaite externaliser les dépendances et les profils pour les tests d'intégration vers un pom séparé, qui peut être inclus dans d'autres projets maven (ne pas hériter d'un pom parent unique). Plus tard, je peux activer les profils lors de l'exécution de tests d'intégration sur différents serveurs d'applications à partir de la console et d'Eclipse.Réutilisation de la configuration maven

integrations-tests 
    pom.xml (contains Arquillian dependencies and profiles) 
     profile:jboss-remote 
     profile:tomcat-embedded 
     dependencies:Arquillian,Java EE,MavenShrinkWrap etc. 
project1 
    pom.xml 
     dependency:integration-tests (or other way to include) 
project2 
    module1 
     pom.xml 
      dependency:integration-tests (or other way to include) 

mvn test -P jboss-remote (profile from integrations-tests) 
mvn test -P tomcat-embedded (profile from integrations-tests) 

Je ne veux pas salir avec settings.xml local, puisque les profils doivent être réutilisables par de nombreux développeurs et serveurs CI.

Répondre

0

Vous voudrez regarder <dependencyManagement> et <pluginManagement> configurations de pom pour y parvenir. Vous pouvez regarder des notes de Maven sur dependency management et build profiles (ce dernier est daté).

Vous pouvez avoir un défi externalizing profils en fonction du type d'exigence que vous avez.

0

C'est en fait une question intéressante.

En bref, il n'y a pas de bonne façon d'atteindre ce que vous voulez. Ce que vous cherchez est quelque chose comme Mix-in pour partager des configurations, mais le principal moyen de partager la configuration dans Maven (actuellement) est principalement par héritage.

Par conséquent, le mieux que vous puissiez faire est de placer toutes les configurations partagées dans un POM parent et de l'activer/désactiver en utilisant Profile. Cependant, il peut être difficile si vous souhaitez activer dans un module, mais désactiver dans un autre. La fonction Mix-in est uniquement disponible en tant qu'importation de portée de dépendances. Cependant, l'utilisation est plutôt limitée (affecte uniquement dependencyManagement). Vous pouvez jeter un coup d'œil pour voir si cela peut vous aider dans une partie de vos besoins.