2010-03-21 26 views
3

J'utilise maven-properties-plugin pendant la phase d'initialisation pour lire dans un groupe de propriétés à partir d'un fichier de propriétés. J'ai également le plugin jetty configuré pour définir quelques propriétés du projet - y compris celles qui sont lues ci-dessus - en tant que propriétés système de jetty.forcer le cycle de vie prérequis pour l'exécution du plugin maven?

Si je lance le résultat comme

mvn initialize jetty:run-war 

cela fonctionne.

Si je dis simplement

mvn jetty:run-war 

échoue. Comment puis-je forcer un objectif spécifié sur la ligne de commande à s'exécuter dans un cycle de vie incluant la phase d'initialisation?

Répondre

0

Si je dis simplement mvn jetty:run-war, cela échoue.

Ce n'est pas ce que je vis. Si vous regardez la documentation de l'objectif jetty:run-war, vous verrez que:

demande l'exécution d'la phase du cycle de vie package avant de s'exécuter.

Ainsi toutes les phases précédentes package plus le package lui-même sont exploités et, par conséquent, les plug-ins liés à eux. Et en effet, avec le POM suivant:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow</groupId> 
    <artifactId>q2488581</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <name>q2488581 Maven Webapp</name> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>maven-jetty-plugin</artifactId> 
     <version>6.1.10</version> 
     </plugin> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <version>1.0-alpha-2</version> 
     <executions> 
      <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
       <file>etc/config/dev.properties</file> 
       </files> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Exécution mvn jetty:run-war produit la sortie suivante:

 
$ mvn jetty:run-war 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building q2488581 - Maven Webapp 
[INFO] task-segment: [jetty:run-war] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Preparing jetty:run-war 
[INFO] [properties:read-project-properties {execution: default}] 
[INFO] [resources:resources {execution: default-resources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 0 resource 
[INFO] [compiler:compile {execution: default-compile}] 
[INFO] No sources to compile 
[INFO] [resources:testResources {execution: default-testResources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory /home/pascal/Projects/stackoverflow/q2488581/src/test/resources 
[INFO] [compiler:testCompile {execution: default-testCompile}] 
[INFO] No sources to compile 
[INFO] [surefire:test {execution: default-test}] 
[INFO] No tests to run. 
[INFO] [war:war {execution: default-war}] 
[INFO] Packaging webapp 
[INFO] Assembling webapp[q2488581] in [/home/pascal/Projects/stackoverflow/q2488581/target/q2488581] 
[INFO] Processing war project 
[INFO] Copying webapp resources[/home/pascal/Projects/stackoverflow/q2488581/src/main/webapp] 
[INFO] Webapp assembled in[76 msecs] 
[INFO] Building war: /home/pascal/Projects/stackoverflow/q2488581/target/q2488581.war 
[INFO] [jetty:run-war {execution: default-cli}] 
... 

Comme on peut le voir, properties:read-project-properties est appelé pendant la phase initialize (avant process-resources auquel resources:resources est lié) comme prévu. En d'autres termes, je ne peux pas reproduire votre problème (ou peut-être que vous devriez être plus précis).

+0

Votre exemple est presque exactement ce que je voulais faire, et il ne fonctionnait pas. Je n'arrive pas. J'ai fini de résoudre le problème en apportant des modifications au contexte de l'application afin qu'il ne soit plus nécessaire d'en faire une propriété système et de l'extraire complètement. – nsayer

1

Suivre les travaux pour moi. J'espère que cela t'aides. fichier: pom.xml

<profiles> 
    <profile> 
     <!-- mvn -Plocal --> 
     <id>local</id> 
     <build> 
      <defaultGoal>package</defaultGoal> 
      <plugins> 
       <plugin> 
        <groupId>org.mortbay.jetty</groupId> 
        <artifactId>jetty-maven-plugin</artifactId> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>run-war</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles>