蚂蚁警告:“'包括行为'没有设置”
我收到以下警告:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
这是什么意思?
Ant运行时
简单地设置includeantruntime="false"
:
<javac includeantruntime="false" ...>...</javac>
如果您必须多次使用javac
-task,则可能需要考虑使用PreSetDef
来定义自己的始终设置includeantruntime="false"
的javac
-task。
额外细节
来自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运行时库; 默认为yes,除非设置了build.sysclasspath。 通常最好将其设置为false,以便脚本的行为对其运行的环境不敏感。
正如@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
将在全球范围内应用,可以在所有项目中全力抑制警告
切特霍西在这里写了一个很好的解释:
从历史上看,Ant总是在类路径中包含自己的运行时,使其可用于javac任务。 因此,无论您是否喜欢,包含在Ant中的任何库以及任何可用于ant的库都会自动在您的构建的类路径中。
有人认为这可能不是大多数人想要的。 所以现在有一个选项。
如果您选择“true”(对于includeantruntime),那么至少您知道您的构建类路径将包含Ant运行时。 如果你选择“false”,那么你接受的事实是构建行为将在旧版本和1.8+之间改变。
当你看到这个警告时感到恼火,如果你的构建完全崩溃,你会更加不快乐。 保持这种默认行为允许未经修改的构建文件在Ant版本之间一致地工作。
链接地址: http://www.djcxy.com/p/60369.html上一篇: ant warning: "'includeantruntime' was not set"
下一篇: What default targets do you have in your typical ant buildfile?