J'ai un module maven avec 2 profil profilé-A et profile-b
Profil-A peut être utilisé indépendante mais profile-B doit être exécuté avec profil-A P>
mvn install -P profile-a // valid mvn install -P profile-a,profile-b // valid mvn install -P profile-b // INVALID
3 Réponses :
Essayez d'utiliser le Activation élément du profil-A en vérifiant si une propriété est définie . Ensuite, dans Profile-B définissez la propriété afin de devenir un profil-A devenir actif. p>
Malheureusement, ce n'est pas une fonctionnalité prise en charge.
y a-t-il de toute façon pour vous assurer que l'utilisateur ne peut pas installer le module avec uniquement le profil-B? ou activer le profil: un automatiquement si profile-b utilisé seul? p>
Non, il n'ya aucun moyen de déclencher un profil d'un autre (non pris en charge, voir La réponse de Brett à une question connexe) ni pour interdire strictement l'utilisation d'un profil donné. p>
La meilleure chose à faire est d'utiliser l'activation de la propriété et une propriété commune em> pour activer les deux profils: p>
xxx pré> et Passer la propriété lors de l'invocation de MVN déclencherait les deux: P>
$ mvn help:active-profiles -DpropertyX [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Q4099626 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-help-plugin:2.1.1:active-profiles (default-cli) @ Q4099626 --- [INFO] Active Profiles for Project 'com.stackoverflow:Q4099626:jar:1.0-SNAPSHOT': The following profiles are active: - profile-a (source: pom) - profile-b (source: pom)
Mettez ceci dans le profil-b. Au moins, vous empêchez alors les mauvaises constructions et vous informez l'utilisateur. Je ne l'ai pas testé, mais cela devrait marcher. S'il y a une faute de frappe, veuillez le corriger:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<id>check-profile-combinations</id>
<phase>validate</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
List profiles = project.getActiveProfiles()
boolean profileAPresent=false
profiles.each {
if ( it.getId().equals("profile-a" ) {
profileAPresent=true
}
}
if ( !profileAPresent ) {
fail("profile-b can be used only together with profile-a")
}
</source>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>