我收到以下警告:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
这是什么意思?
答案 0 :(得分:380)
只需设置includeantruntime="false"
:
<javac includeantruntime="false" ...>...</javac>
如果您必须多次使用javac
- 任务,您可能需要考虑使用PreSetDef
来定义自己的javac
- 始终设置includeantruntime="false"
的任务。< / p>
来自http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set:
这是由错误造成的 在Ant 1.8中介绍。只需添加一个 该名称的属性为javac 任务,将其设置为false,然后忘记它 曾经发生过。
来自http://ant.apache.org/manual/Tasks/javac.html:
是否包含Ant运行时 类路径中的库;默认 是的,除非build.sysclasspath是 组。通常最好将此设置为 false所以脚本的行为不是 对环境敏感 它运行了。
答案 1 :(得分:69)
正如@Daniel Kutik所说,presetdef
是个不错的选择。特别是如果一个人正在处理一个包含许多build.xml
文件的项目,而这些文件不能或不愿编辑(例如,来自第三方的文件)。
要使用presetdef
,请在顶级build.xml
文件中添加以下行:
<presetdef name="javac">
<javac includeantruntime="false" />
</presetdef>
现在所有后续javac
任务基本上都会继承includeantruntime="false"
。如果您的项目确实需要ant运行时库,则可以将它们显式添加到构建文件中,也可以设置includeantruntime="true"
。后者也将摆脱警告。
如果需要,后续的javac
任务仍然可以明确地更改它,例如:
<javac destdir="out" includeantruntime="true">
<src path="foo.java" />
<src path="bar.java" />
</javac>
我建议不要使用ANT_OPTS
。它有效,但它违背了警告的目的。该警告告诉一个人的构建可能在另一个系统上表现不同。使用ANT_OPTS
使这更有可能,因为现在每个系统都需要以相同的方式使用ANT_OPTS
。此外,ANT_OPTS
将在全球范围内适用,在所有项目中毫不客气地禁止警告
答案 2 :(得分:60)
Chet Hosey写了一个很好的解释here:
从历史上看,Ant总是在javac任务可用的类路径中包含自己的运行时。因此,Ant中包含的任何库以及ant可用的任何库都会自动出现在构建的类路径中,无论您是否愿意。
决定这可能不是大多数人想要的。所以现在有一个选择。
如果选择“true”(对于includeantruntime),那么至少你知道你的构建类路径将包含Ant运行时。如果您选择“false”,那么您接受这样的事实:构建行为将在旧版本和1.8 +之间发生变化。
如果你看到这个警告一样恼火,如果你的构建完全破坏,你会更不高兴。保持此默认行为允许未修改的构建文件在Ant版本之间保持一致。
答案 3 :(得分:26)
丹尼尔的答案非常完美。这是我添加到build.xml中的示例代码段:
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false">
<!-- ^^^^^^^^^^^^^^^^^^^^^^^^^ -->
<classpath>
<path id="application" location="${jar.dir}/${ant.project.name}.jar"/>
<path id="junit" location="${lib.dir}/junit-4.9b2.jar"/>
</classpath>
</javac>
</target>
答案 4 :(得分:5)
如果你喜欢我在命令行工作,快速回答正在执行
export ANT_OPTS=-Dbuild.sysclasspath=ignore
然后再次运行你的蚂蚁脚本。
答案 5 :(得分:5)
在build.xml文件中使用<property name="build.sysclasspath" value="last"/>
有关详细信息,请在Ant javac
中搜索includeAntRuntime
可以找到其他可能的值here
答案 6 :(得分:-3)
我面对同样的问题,我会检查程序和功能。有一个更新已安装jdk1.8与eclipse中的ant的旧设置(jdk1.6.0)不兼容。 我安装了这个更新。 现在,我的蚂蚁项目取得了成功。
尝试一下,希望这会有所帮助。