2010-10-14 3 views
1

hey, J'ai un plugin deploy pojo (déployer une guerre sur un serveur distant). J'ai le plugin de déploiement à distance dans la section de construction de la définition de pom, j'ai besoin de déclencher la phase du paquet avant de déployer l'objectif distant, pour que la guerre soit déjà créée avant de la sécuriser - la copier sur un serveur distant. Avec les éléments d'exécution (selon une documentation), je peux attacher mon objectif à une phase particulière, par exemple le lier à la phase suivante, donc dans mon cas, installer la phase ... mais c'est juste une solution de contournement. En d'autres termes, si je ne place que mon objectif dans la section de construction et l'exécute, la phase du package n'est pas exécutée avant. S'il vous plaît aiderMaven mojo plugin, comment définir les phases qui doivent être déclenchées avant cet objectif?

Répondre

1

Maven Mojo plugin, comment définir les phases qui doivent être déclenchées avant cet objectif?

Vous ne pouvez pas.

Je le plugin à distance Deploy dans la section de construction de la définition de pom, j'ai besoin phase package pour être déclenché avant objectif de déployer à distance, car elle la guerre soit déjà créée avant secure-le copier sur une télécommande serveur.

bind à la phase package, votre objectif sera appelé après les objectifs limites à package par défaut (si la guerre sera là).

Voici un exemple illustrant ce comportement avec le plugin AntRun Maven configuré comme ceci:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <configuration> 
      <target> 
      <echo message="Hi!!!!!"/> 
      </target> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

Et la sortie de mvn package:

 
$ mvn package 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q3934833 Maven Webapp 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
... 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ Q3934833 --- 
[INFO] No sources to compile 
[INFO] 
[INFO] --- maven-surefire-plugin:2.5:test (default-test) @ Q3934833 --- 
[INFO] No tests to run. 
[INFO] 
[INFO] --- maven-war-plugin:2.1:war (default-war) @ Q3934833 --- 
[INFO] Packaging webapp 
[INFO] Assembling webapp [Q3934833] in [/home/pascal/Projects/stackoverflow/Q3934833/target/Q3934833] 
[INFO] Processing war project 
[INFO] Copying webapp resources [/home/pascal/Projects/stackoverflow/Q3934833/src/main/webapp] 
[INFO] Webapp assembled in [317 msecs] 
[INFO] Building war: /home/pascal/Projects/stackoverflow/Q3934833/target/Q3934833.war 
[INFO] WEB-INF/web.xml already added, skipping 
[INFO] 
[INFO] --- maven-antrun-plugin:1.6:run (default) @ Q3934833 --- 
[INFO] Executing tasks 

main: 
    [echo] Hi!!!!! 
[INFO] Executed tasks 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
... 

Le plugin antrun est exécuté après package, comme prévu .

+0

Je l'ai essayé de cette façon, et la guerre n'a pas été créé. J'ai essayé exactement comme dans l'exemple que j'ai collé et j'ai eu "la guerre n'existe pas" – lisak

+0

Cela fonctionne avec la phase d'installation, mais pas avec le paquet ... mais cette solution de contournement ne serait pas bonne, parce que je devrais installez toujours l'artefact avant le déploiement – lisak

+0

@lisak Cela fonctionne comme annoncé. Si vous obtenez un comportement différent, montrez votre configuration et la sortie démontrant le problème. –

0

Vous pouvez utiliser la phase de PREPARE_PACKAGE dans l'annotation @Mojo:

@Mojo(name = "myName", defaultPhase = LifecyclePhase.PREPARE_PACKAGE) 
Questions connexes