[英]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.