2011-08-09 4 views
1

J'utilise maven-antrun-plugin avec install4j pour créer des programmes d'installation pour mon application. Cela ne fonctionne pas si java n'est pas sur le chemin (système). Comme il faut forcer un nouveau processus Java pour exécuter la tâche, il doit y avoir un moyen de lui passer les variables d'environnement, mais je ne peux pas le comprendre.Comment passer le plugin antrun à une nouvelle variable d'environnement?

Install4J utilisera EXE4J_JAVA_HOME pour sélectionner une installation java. Je veux passer ça à Ant via le plugin antrun. Je peux penser à quelques façons hackish de le faire, mais il doit y avoir quelque chose de simple que je néglige. Pour référence, voici ma config antrun:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 

    <executions> 
     <execution> 
      <phase>package</phase> 

      <goals> 
       <goal>run</goal> 
      </goals> 

      <configuration> 
       <target> 
        <!--suppress MavenModelInspection --> 
        <taskdef name="install4j" classname="com.install4j.Install4JTask" 
         classpath="${install4j.ant.path}"/> 

        <install4j projectfile="itma-assembly-client-swing.install4j" buildids="62"> 
         <variable name="verbose.version.number" value="${verbose-version-number}"/> 
         <variable name="media.file.prefix" value="${media-file-prefix}"/> 
         <variable name="main.class" value="${itma-client-swing-bootstrap-main-class}"/> 
        </install4j> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Répondre

1

Question intéressante ... Je l'ai fait des recherches sur elle et a trouvé la propriété -task pour Ant qui a fait son premier prometteur mais il permet un accès en lecture uniquement Variables d'environnement. Ces sources sur jguru et coderanch affirment qu'un est le seul moyen de passer des variables d'environnement à partir de l'intérieur de Ant. Ce n'est pas la meilleure façon, mais peut-être vous pouvez exec le com.install4j.Install4JTask à partir de la ligne de commande aka via exec - c'est peut-être l'une de vos façons hackish ... :-)

+0

La suggestion d'utiliser exec est la meilleure J'ai toujours été capable de le faire, j'ai donc accepté cette réponse. Même avec Gradle, la seule façon de faire ce travail était d'ignorer les tâches fourmi fournies et d'exécuter les commandes directement. En outre, 'EXE4J_JAVA_HOME' et' INSTALL4J_JAVA_HOME_OVERRIDE' ne semblent fonctionner que sous linux avec les versions antérieures de Install4j (4.2.8), au moins pour moi. –

Questions connexes