[英]ant warning: “'includeantruntime' was not set”
我收到以下警告:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
这是什么意思?
只需设置includeantruntime="false"
:
<javac includeantruntime="false" ...>...</javac>
如果必须多次使用javac
-task,则可能需要考虑使用PreSetDef
来定义自己的javac
-task,它始终设置includeantruntime="false"
。
来自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_OPTS
禁止警告
Chet Hosey 在这里写了一个很好的解释:
从历史上看,Ant总是将自己的运行时包含在可用于javac任务的类路径中。 因此,Ant中包含的任何库以及ant可用的任何库都会自动出现在构建的类路径中,无论您是否喜欢它。
决定这可能不是大多数人想要的。 所以现在有一个选择。
如果选择“true”(对于includeantruntime),那么至少你知道你的构建类路径将包含Ant运行时。 如果选择“false”,那么您接受这样的事实:构建行为将在旧版本和1.8+之间发生变化。
正如你要看到这个警告一样恼火,如果你的构建完全破坏,你会更不高兴。 保持此默认行为允许未修改的构建文件在Ant版本之间保持一致。
丹尼尔的答案非常完美。 这是我添加到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>
在build.xml文件中使用<property name="build.sysclasspath" value="last"/>
有关详细信息,请在Ant javac中搜索includeAntRuntime
其他可能的值可以在这里找到
如果你喜欢我从命令行工作,快速答案正在执行
export ANT_OPTS=-Dbuild.sysclasspath=ignore
然后再次运行您的ant脚本。
我面对同样的问题,我会检查程序和功能。 有一个更新已安装jdk1.8与eclipse中的ant的旧设置(jdk1.6.0)不兼容。 我安装了这个更新。 现在,我的蚂蚁项目取得了成功。
试试吧,希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.