簡體   English   中英

做Maven構建的Ant任務-但使用與其他Ant腳本不同的Java版本

[英]Ant task to do a Maven build - but use a different version of Java than the rest of the Ant script

你好

我正在嘗試將Maven構建包括到我的Ant構建中。 當我僅使用涉及的Ant任務(使用Maven Ant插件)時 ,就可以順利進行。

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

我嘗試過:在我的主POM的build部分中添加一個插件來自定義編譯器:

<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腳本來執行此操作。

我還嘗試過<property>和<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>

您應該嘗試使用ant exec Task來實現。 在此處查找以前的詳細答案: 在不同的jvm中運行ant任務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM