2010-05-13 4 views
1

J'utilise un plugin maven pour install4j dans mon projet, situé here. Ce plugin vous permet de passer des variables à install4j en utilisant la section <compilerVariables>. Voici la section pertinente de mon pom:Maven: propriétés non substituées

<plugin> 
    <groupId>com.google.code.maven-install4j</groupId> 
    <artifactId>maven-install4j-plugin</artifactId> 
    <version>0.1.1</version> 
    <configuration> 
     <executable>${devenv.install4jc}</executable> 
     <configFile>${basedir}/newinstaller/ehd.install4j</configFile> 
     <releaseId>${project.version}</releaseId> 
     <attach>false</attach> 
     <skipOnMissingExecutable>false</skipOnMissingExecutable> 
     <compilerVariables> 
      <property> 
       <name>m2_home</name> 
       <value>${settings.localRepository}</value> 
      </property> 
     </compilerVariables> 
    </configuration> 
</plugin> 

Le problème est que $ {} settings.localRepository ne se substitue pas par le répertoire quand je lance le plug-in. Voici le script de ligne de commande que génère install4j:

[INFO] Running the following command for install4j compile: /bin/sh -c /home/zach/install4j/bin/install4jc --release=9.1-SNAPSHOT --destination="/home/zach/projects/java/ehdtrunk/target/install4j" -D m2_home=${settings.localRepository} /home/zach/projects/java/ehdtrunk/newinstaller/ehd.install4j 

Est-ce la faute du plugin? Si oui, qu'est-ce qui doit changer pour permettre la substitution?

Répondre

1

Le plug-in en question accepte un paramètre qui est une instance de propriétés. Pour une raison quelconque, les expressions utilisées pour configurer les instances de propriétés ne sont pas évaluées automatiquement. J'ai dû changer le plugin pour utiliser org.apache.maven.plugin.PluginParameterExpressionEvaluator pour évaluer $ {settings.localRepository}.

1

Ce qui suit POM fonctionne pour moi (avec Maven 2.2.1):

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow</groupId> 
    <artifactId>Q2828732</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencies> 
    ... 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>validate</phase> 
      <configuration> 
       <tasks> 
       <echo>${settings.localRepository}</echo> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Et en cours d'exécution processus-ressources de mvn produit la sortie suivante:

 
$ mvn validate 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q2828732 
[INFO] task-segment: [validate] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [antrun:run {execution: default}] 
[INFO] Executing tasks 
    [echo] /home/pascal/.m2/repository 
[INFO] Executed tasks 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2 seconds 
[INFO] Finished at: Thu May 13 19:28:38 CEST 2010 
[INFO] Final Memory: 3M/54M 
[INFO] ------------------------------------------------------------------------ 

Est-ce que le travail ci-dessus pour vous ? Utilisez-vous M2Eclipse? Pourrait-il être lié à MNGECLIPSE-299?

+0

Ceci est une ligne de commande directe Maven 2. Et oui, j'obtiens la sortie correcte en utilisant cette propriété dans le plugin antrun. Il semble que cela pourrait être un problème avec le plugin. Je verrai si je découvre ce que le plugin antrun fait avec les entrées de propriétés comme ça et voir si je peux l'appliquer à cet autre plugin. – UrLicht

+0

@jobrahms * Il semble que ce soit un problème avec le plugin * oui, je pense. –

+0

@jobrahms J'ai testé la propriété en dehors d'antrun avec 'mvn help: evaluate' et je confirme qu'elle est correctement résolue. –

Questions connexes