10
votes

Dépendance de profil maven

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


0 commentaires

3 Réponses :


0
votes

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.


1 commentaires

Malheureusement, ce n'est pas une fonctionnalité prise en charge.



9
votes

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)


0 commentaires

2
votes

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>


0 commentaires