2014-01-21 53 views
0

喜的其餘部分,Ant任務做了Maven構建 - 但使用不同版本的Java比Ant腳本

我想包括一個Maven構建成我的Ant構建。當我僅使用涉及的Ant任務時,使用Maven Ant plugin就可以了。

我的問題是,我的Maven代碼包含1.6依賴的.jar文件,但我的Ant腳本是1.5依賴的,所以如果使用1.6運行將會失敗。所以我必須創建一個切換JVM以在我的Ant腳本中運行Maven目標的進程。

我曾嘗試: 添加插件到我的主POM的構建部分,其定製編譯:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.5.1</version> 
    <configuration> 
     <executable>"c:\Program Files (x86)\Java\jdk1.6.0_45\bin\javac.exe"</executable> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
</plugin> 

因爲它說,它與-s的問題。此不起作用。我已經檢查過,它是javac中的Java 1.6參數,它在1.5中不存在!所以它創建1.6的javac調用,然後使用1.5 javac運行它。另外,我寧願只編輯Ant腳本來執行此操作。

我也試圖<財產的每個組合>和< sysproperty>的(在Java調用)和< ARG>設置PATH和JAVA_HOME變量,但他們似乎沒有工作,我需要他們的方式。這是不可能的嗎?我甚至將< java>標記的JVM屬性設置爲針對1.6 java運行,但它似乎仍然與Maven正在調用的構建的javac有關。

在此先感謝。

下面是從Maven站點(略打磨)爲方便起見,部分:

<macrodef name="maven"> 
    <attribute name="options" default="" /> 
    <attribute name="goal" /> 
    <attribute name="basedir" /> 
    <attribute name="resultproperty" default="maven.result" /> 
    <element name="args" implicit="true" optional="true" /> 
    <sequential> 
    <java classname="org.codehaus.classworlds.Launcher" fork="true" dir="@{basedir}" resultproperty="@{resultproperty}"> 
     <jvmarg value="-Xmx512m"/> 
     <classpath> 
      <fileset dir="${maven.home}/boot"><include name="*.jar" /></fileset> 
      <fileset dir="${maven.home}/lib"><include name="*.jar" /></fileset> 
     </classpath> 
     <sysproperty key="classworlds.conf" value="${maven.home}/bin/m2.conf" /> 
     <sysproperty key="maven.home" value="${maven.home}" /> 
     <arg line="--batch-mode @{options} @{goal}" /> 
    </java> 
    </sequential> 
</macrodef> 

<target name="my_maven_target"> 
    <maven basedir="${basedir}" options="${maven.opts}" goal="install" resultproperty="maven.build.result"/> 
</target> 

回答