web-dev-qa-db-fra.com

Comment exécuter un objectif spécifique avec une configuration particulière dans un plugin Maven lorsque j'ai plusieurs configurations pour cet objectif

Voir la configuration du plugin de pom.xml ci-dessous.

Je peux faire:

mvn myplugin:myGoal

Qui exécute myGoal (les deux exécutions je suppose) mais je veux pouvoir choisir la première ou la deuxième exécution indépendamment.

Je sais que je peux ajouter un identifiant à l'élément d'exécution, mais comment faire référence à cet identifiant sur la ligne de commande. Je voudrais arriver à quelque chose qui fait ce que fait cette commande imaginée:

mvn myplugin:myGoal --executionId=1

Est-ce possible ou est-ce que je m'y trompe?

        <plugin>
            <groupId>org.myplugin</groupId>
            <artifactId>myplugin-maven-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>myGoal</goal>
                    </goals>
                    <configuration>
                        <myParam>cats</myParam>
                    </configuration>
                </execution>
                <execution>
                    <goals>
                        <goal>myGoal</goal>
                    </goals>
                    <configuration>
                        <myParam>dogs</myParam>
                    </configuration>
                </execution>
            </executions>
        </plugin>
26
lukewm

Je peux faire mvn myplugin:myGoalWhich Exécute myGoal (les deux exécutions je suppose)

Aucun d'entre eux (en supposant qu'ils avaient un id unique). Les exécutions sont liées à une phase, vous devez exécuter la phase donnée pour les déclencher.

Je sais que je peux ajouter un identifiant à l'élément d'exécution, mais comment faire référence à cet identifiant sur la ligne de commande.

Non supporté. Ce qui est possible pour les plugins invoqués sur la CLI est de définir une configuration non globale dans le POM en utilisant la spéciale default-cliexecutionId, comme ça:

<plugin>
  <artifactId>maven-Assembly-plugin</artifactId>
  <executions>
    <execution>
      <id>default-cli</id>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
          <descriptorRef>project</descriptorRef>
        </descriptorRefs>
      </configuration>
    </execution>
  </executions>
</plugin>

Est-ce possible ou est-ce que je m'y trompe?

Non, pas possible. Soit passer les paramètres sur la ligne de commande ou utiliser des profils (avec ou sans l'exécution par défaut ci-dessus).

Les références

20
Pascal Thivent

L'exécution de plusieurs objectifs à partir de la CLI est désormais prise en charge dans Maven 3.3.1+

mvn exec:Java@first-cli
mvn exec:Java@second-cli

Où first-cli/second-cli sont les identifiants d'exécution.

http://blog.soebes.de/blog/2015/03/17/Apache-maven-3-dot-3-1-features/

27
mdi

Hé, vous pouvez créer votre objectif comme ceci: -

org.myplugin:myplugin-maven-plugin:1.1.1:myGoal  i.e
<groupId>:<artifactId>:<version>:<yourgoal>

Cela fonctionne dans mon cas ...

7
Onkar_M18

L'hypothèse que vous avez faite que si vous appelez

  mvn myplugin:myGoal

Mais le problème est que vous obtiendrez un message d'erreur car l'exécution n'a pas d'identifiant unique (les deux dans ce cas ont le même).

Vous pouvez accéder à ce que vous voulez faire via des profils que vous pouvez activer via mvn -PXYZ et mvn -PABC

3
khmarbaise