我试图通过命令行覆盖Ant编译器属性,以便所有'javac'任务都使用我指定的编译器。 我遇到的问题是,为编译器设置自己的值的任何目标都会覆盖我在命令行中设置的目标。所以,即使我输入以下命令。
ant -Dbuild.compiler=mycompiler
具有以下内容的任何目标都将使用现代编译器而不是mycompiler,因为该编译器=“现代”属性
<javac srcdir="."
destdir="${classes.dir}/core"
compiler="modern"
encoding="UTF-8">
<include name="org/**" />
<include name="com/**" />
<compilerarg line="${config.build.compilerarg}" />
</javac>
有没有办法从命令行覆盖它,或者我是否仍在编辑构建文件?
答案 0 :(得分:8)
Ant javac
task documentation说:
可以使用不同的编译器。这可以通过设置全局build.compiler属性来指定,该属性将影响整个构建中的所有任务,或者通过设置特定于当前任务的编译器属性来指定。 build.compiler属性或编译器属性的有效值为:
听起来好像你可以 指定全局build.compiler属性或设置特定的编译器属性。
因此,您似乎需要修改构建文件,并且:
从javac调用中删除编译器属性并允许 global build.compiler设置为 级联下来
更改编译器的值 来自硬编码字符串的属性 compiler =“modern”是属性 的编译= “$ {javac.compiler}”强>