2014-01-21 37 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> 

回答