2011-08-09 74 views
1

我正在使用帶有install4j的maven-antrun-plugin爲我的應用程序構建安裝程序。如果java不在(系統)路徑上,它不起作用。由於它分叉了一個新的java進程來運行任務,因此必須有一種方法可以將它傳遞給環境變量,但我無法弄清楚。如何將antrun插件傳遞給新的環境變量?

Install4J將使用EXE4J_JAVA_HOME來選擇Java安裝。我想通過antrun-plugin將它傳遞給ant。我可以想到一些這樣做的方法,但是我可以忽略一些簡單的事情。作爲參考,這是我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> 

回答

1

有趣的問題......我做了一些關於它的研究,發現財產 -task爲Ant這聽起來確實有爲第一,但它允許只讀訪問上環境變量。 jgurucoderanch上的這些消息來源聲稱,要從Ant內部傳遞環境變量的唯一方法是使用。 這不是最好的方式,但也許你可以從命令行通過exec來執行com.install4j.Install4JTask - 也許這是你的一種駭人的方式...... :-)

+0

使用exec的建議是最好的我曾經爲此提出過,所以我接受了這個答案。即使使用Gradle,我能夠完成這項工作的唯一方法是忽略提供的ant任務並直接執行命令。另外,'EXE4J_JAVA_HOME'和'INSTALL4J_JAVA_HOME_OVERRIDE'似乎只適用於早期版本的Install4j(4.2.8)的linux,至少對我而言。 –

相關問題