您好,
我正在尝试将Maven构建包含在我的Ant构建中。当我使用Maven Ant plugin时只使用Ant任务时,我就可以了。
我的问题是我的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脚本来执行此操作。
我也尝试了&lt; property&gt;的每个组合。和&lt; sysproperty&gt; (在Java调用中)和&lt; arg&gt;设置PATH和JAVA_HOME变量,但它们似乎不像我需要的那样工作。这是不可能的吗?我甚至设置了&lt; java&gt;的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>