我收到以下警告:

[javac] build.xml:9: warning: 'includeantruntime' was not set, 
defaulting to build.sysclasspath=last; set to false for repeatable builds

这是什么意思?


当前回答

我面对同样的情况,我在程序和功能中进行了检查。有一个更新已经安装了jdk1.8,这是不兼容我的旧设置(jdk1.6.0) ant在eclipse中。 我安装了更新。 现在,我的蚂蚁项目是构建成功。

试试吧,希望这对你有所帮助。

其他回答

正如@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运行时

简单地设置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 Task,设置为false,然后忘记它 没有发生过。

从http://ant.apache.org/manual/Tasks/javac.html:

是否包含Ant运行时 类路径中的类库;违约 要是的,除非建造。sysclasspath是 集。通常最好将此设置为 False表示脚本的行为不是 对所处环境敏感 它在运行。

使用<property name="build. "在build.xml文件中Sysclasspath " value="last"/>

欲了解更多细节,请在Ant javac中搜索includeAntRuntime

在这里可以找到其他可能的值

如果你喜欢我从命令行工作,快速的答案是执行

export ANT_OPTS=-Dbuild.sysclasspath=ignore

然后再次运行ant脚本。

我面对同样的情况,我在程序和功能中进行了检查。有一个更新已经安装了jdk1.8,这是不兼容我的旧设置(jdk1.6.0) ant在eclipse中。 我安装了更新。 现在,我的蚂蚁项目是构建成功。

试试吧,希望这对你有所帮助。