喜的其余部分,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>