在Ant的javac任务中覆盖编译器属性

8

我正在尝试通过命令行覆盖Ant编译器属性,以便所有的“javac”任务都使用我指定的编译器。

遇到的问题是,任何设置自己的编译器值的目标都会覆盖我在命令行设置的值。因此,即使我输入以下命令:

ant -Dbuild.compiler=mycompiler  

任何具有以下特点的目标都将使用现代编译器而非我的编译器,因为该目标带有 compiler="modern" 属性。
<javac srcdir="."  
       destdir="${classes.dir}/core"  
       compiler="modern"  
       encoding="UTF-8">  
    <include name="org/**" />  
    <include name="com/**" />  
    <compilerarg line="${config.build.compilerarg}" />  
</javac>    

有没有办法通过命令行覆盖这个设置,还是我只能编辑构建文件?
1个回答

8

The Ant javac 任务文档中说:

可以使用不同的编译器。这可以通过设置全局 build.compiler 属性来实现,该属性将影响整个构建过程中的所有任务;或通过设置编译器属性来实现,该属性是特定于当前任务的。build.compiler 属性或编译器属性的有效值为:

看起来好像你可以要么指定全局 build.compiler 属性要么设置特定的编译器属性。

因此,你需要修改你的构建文件并且:

  1. 从 javac 调用中删除编译器属性,并允许全局 build.compiler 设置进行级联。

  2. 将编译器属性的值从硬编码的字符串 compiler="modern" 改为属性 compiler="${javac.compiler}"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接