2010-02-19 4 views
4

Je cherche un moyen de créer des méta-profils qui n'activent que des sous-profils dans Maven. Prenons un exemple très concret. Je les profils suivants:Méta-profils dans Maven

  • "server-jboss"
  • "serveur tomcat"
  • "base de données hsql"
  • "base de données Oracle"

Pour construire la projet, vous devez choisir un profil pour le serveur et un pour la base de données. Je veux créer deux "méta-profils":

  • "dev" => "server-tomcat", "base de données hsql"
  • "prod" => "server-jboss", "database- oracle »

La première idée qui vient est d'activer les sous-profils par une propriété:

<profile> 
    <id>database-oracle</id> 
    <activation> 
    <property> 
     <name>prod</name> 
    </property> 
    </activation> 
</profile> 

Mais cette façon, je ne peux pas partager entre les profils de sous-profils méta-. Par exemple, je souhaite que mon profil "database-oracle" soit activé par les méta-profils "pre-prod" et "prod".

Remarque: mes sous-profils contiennent uniquement des propriétés. Ils sont utilisés pour filtrer les ressources et dans les poms enfants. C'est pourquoi je pense qu'il pourrait y avoir une solution pour cette situation particulière.

La situation idéale pour moi serait de les faire extériorisée dans les fichiers de propriétés externes, mais un problème à la fois;)

+0

En fait, cette question ressemble vraiment à une dupe de http://stackoverflow.com/questions/2246033/why-cant-i-activate-a-maven2-profile-from-another-profile. Veuillez confirmer si vous pensez que c'est une question différente. –

+0

Oui, j'ai parcouru ces questions, mais je pense qu'il pourrait y avoir un truc dans ma situation. Mes sous-profils ne sont que des ensembles de propriétés que je veux agréger. Peut-être le titre de ma question est un peu ambitieux;) – nicoulaj

Répondre

6

Activation des profils d'un autre profil n'est pas possible (cela a été discuté dans ce previous question) . Votre première idée, en utilisant des propriétés identiques pour activer différents profils, est la meilleure chose que vous pouvez mettre en œuvre, mais a en effet des limites.

+0

Dans ce cas, y a-t-il un truc pour rendre un profil activé par plusieurs propriétés? Je vois que vous pouvez utiliser des plages pour la version jdk par exemple, peut-être il y a une syntaxe cachée comme pord, pré-prod? – nicoulaj

2

Avez-vous essayé une solution en utilisant le plugin maven-properties-plugin? Certaines possibilités sont discutées in this question et here.

+0

Oui, je l'ai essayé, ça ressemblait à une bonne solution. Malheureusement, je ne pouvais pas le faire fonctionner correctement: j'ai chargé les fichiers de propriétés dans le POM, cela a bien fonctionné pour le filtrage des ressources, mais pas pour les utiliser directement dans le POM. – nicoulaj