2010-02-12 2 views
8

Mis à jour pour (espérons-le) clarifier: Si un objectif est défini pour s'exécuter pendant une phase donnée, est-il possible d'exécuter l'objectif individuel sans courir à travers toutes les phases. En d'autres termes serait-il possible d'exécuter l'objectif antrun:run (qui est défini dans le cadre de la phase d'installation ci-dessous) sans avoir de dépendances, de générer des ressources, de compiler, de tester, de package, etc? J'utilise le plugin antrun pour créer un fichier zip pendant la phase package et pour supprimer et copier certains fichiers pendant la phase install. Je comprends comment exécuter des objectifs de plugin maven unique, par exemple: mvn antrun:run. Cependant, existe-t-il un moyen d'exécuter l'objectif d'une exécution spécifique? Quelque chose comme mvn antrun:run:execution-id, ou mvn phase:antrun:run?Est-il possible de distinguer et d'exécuter un objectif spécifique lié à une phase maven?

Fondamentalement, je serais bien si je peux dire à maven de ne rien faire d'autre que d'exécuter les tâches ant définies ci-dessous dans la phase de déploiement, par exemple. C'est assez fastidieux d'attendre que maven passe par toutes les phases pour vérifier si les tâches de fourmi dans la phase de déploiement fonctionnent correctement.

<executions> 
    <!-- create zip file --> 
    <execution> 
    <id>create-zip</id> 
    <phase>package</phase> 
    <configuration> 
     <tasks> 
    ...create zip... 
     </tasks> 
    </configuration> 
    <goals> 
     <goal>run</goal> 
    </goals> 
     </execution> 
    <!-- do some other stuff --> 
    <execution> 
    <id>copy-files</id> 
    <phase>install</phase> 
    <configuration> 
     <tasks> 
    ...delete some files, copy some files ... 
     </tasks> 
    </configuration> 
    <goals> 
     <goal>run</goal> 
    </goals> 
     </execution> 
    </executions> 
+0

Oui c'est possible – ant

Répondre

6

En d'autres termes, il serait être possible d'exécuter l'objectif antrun: run (qui est défini dans le cadre de la phase d'installation ci-dessous) sans avoir de dépendances, générer des ressources, compiler, tester, paquet, etc?

Non, ce n'est pas le cas. Alors que vous pouvez configurer un plugin (avec une section <configuration> sous l'élément <plugin>) et appeler sur la ligne de commande, vous ne pouvez pas appeler un ID de fichier spécifique (et par conséquent le <configuration> spécifique à un <execution>).

La seule solution dans votre cas serait de déclarer le plugin antrun dans un profil, disons my-profile, pour dupliquer la partie suivante de la configuration pour configurer le plug-in dans ce profil:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.3</version> 
    <configuration> 
    <tasks> 
     ... delete some files, copy some files ... 
    </tasks> 
    </configuration> 
</plugin> 

et appel avec le bon profil actif:

mvn antrun:run -Pmy-profile 
0

Ex:

Lorsque vous exécutez jboss avec Maven, vous ne pouvez pas voir la sortie de la console jboss, mais je besoin pour afficher, donc ce que je l'ai fait est que j'écrit un fichier java qui lit dans server.log (la sortie de la console du serveur) car elle change pour afficher les changements de sorte qu'il semble que la console de jboss est en train de montrer (un peu hack-ish mais fonctionnant). J'arrive donc au point de répondre à votre question, lors du test de pré-intégration, j'ai exécuté un objectif java qui lance mon programme java. Voici comment, à l'aide d'exécuter le plugin bien sûr:

<plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.1</version> 
       <executions> 
        <execution> 
         <id>console-start</id> 
         <phase>pre-integration-test</phase> 
         <goals> 
          <goal>java</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <mainClass>org.eclipse.console.Main</mainClass> 
       </configuration> 
      </plugin> 

Vous exécutez simplement l'installer et il exécute lors de la pré-intégration-test, si vous voulez juste d'exécuter quelque chose comme java, utilisez le plug-in exécuter. Désolé si la réponse ne convient pas, je n'a pas eu la patience de lire votre question dans les détails, mes heures de travail sont plus .. hourras

Questions connexes