Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 蚂蚁警告:“';包括时间和#x27;“未设置”;_Java_Ant_Build_Javac_Build Tools - Fatal编程技术网

Java 蚂蚁警告:“';包括时间和#x27;“未设置”;

Java 蚂蚁警告:“';包括时间和#x27;“未设置”;,java,ant,build,javac,build-tools,Java,Ant,Build,Javac,Build Tools,我收到以下警告: [javac] build.xml:9: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 这意味着什么?Ant运行时 只需设置includeantruntime=“false”: 。。。 如果您必须多次使用 javac 任务,您可能需要考虑使用以定义您自己的 javac -任务,该任务总是

我收到以下警告:

[javac] build.xml:9: warning: 'includeantruntime' was not set, 
defaulting to build.sysclasspath=last; set to false for repeatable builds
这意味着什么?

Ant运行时 只需设置
includeantruntime=“false”

。。。

如果您必须多次使用<代码> javac 任务,您可能需要考虑使用以定义您自己的<代码> javac -任务,该任务总是设置<代码>包含DeaDeunTunTime=“false”< /C> > 其他细节 发件人:

那是由一个不正常的特征引起的 在Ant1.8中介绍。只需添加一个 该名称对javac的属性 任务,将其设置为false,然后忘记它 曾经发生过

发件人:


是否包括Ant运行时 类路径中的库;默认值 为是,除非build.sysclasspath为 设置通常最好将此设置为 false,因此脚本的行为不正确 对所处环境敏感 它正在运行

写了一个很好的解释:

历史上,Ant总是在javac任务可用的类路径中包含自己的运行时。因此,无论您喜欢与否,Ant附带的任何库以及Ant可用的任何库都会自动位于构建的类路径中

这可能不是大多数人想要的。所以现在有了一个选择

如果选择“true”(对于includeantruntime),那么至少您知道构建类路径将包括Ant运行时。如果您选择“false”,那么您接受了一个事实,即构建行为将在旧版本和1.8+之间发生变化

尽管您看到这个警告很恼火,但如果您的构建完全崩溃,您会更加不高兴。保持此默认行为允许未修改的构建文件在Ant版本之间一致工作


丹尼尔的答案非常完美。以下是我添加到build.xml中的示例代码段:


如果您喜欢我从命令行工作,快速回答正在执行

export ANT_OPTS=-Dbuild.sysclasspath=ignore

然后再次运行ant脚本。

正如@Daniel Kutik提到的,这是一个不错的选择。尤其是如果一个项目中有许多无法或不愿意编辑的
build.xml
文件(例如,来自第三方的文件)

要使用
presetdef
,请在顶级
build.xml
文件中添加以下行:

  <presetdef name="javac">
    <javac includeantruntime="false" />
  </presetdef>
我建议不要使用
ANT\u OPTS
。它起作用了,但它违背了警告的目的。警告告诉您,您的构建可能在另一个系统上表现不同。使用
ANT_-OPTS
使得这种情况更加可能,因为现在每个系统都需要以相同的方式使用
ANT_-OPTS
。另外,
ANT\u OPTS
将在全球范围内应用,在所有项目中都会自动取消警告

在build.xml文件中使用

有关更多详细信息,请在中搜索
includeAntRuntime


其他可能的值也可以找到

我面临同样的问题,我签入了程序和功能。jdk1.8安装了一个更新,它与eclipse中ant的旧设置(jdk1.6.0)不兼容。 我安装了那个更新。 现在,我的ant项目是BuildSuccess


试试看,希望这会有帮助。

ApacheAnt(TM)1.8.2版于2010年12月20日编译,因此如果需要类路径中的Ant运行时,请将其设置为yes/true,否则设置为no/false。我想你不需要它。+1,回答得很好。我只是希望我能在构建文件中的某个地方设置一次,而不是将每个javac调用都与它混在一起……在任何情况下,它设置为True会怎么样?“是否在类路径中包含Ant运行时库;除非设置了build.sysclasspath,否则默认为yes。通常最好将其设置为false,以便脚本的行为对运行它的环境不敏感。“我一直认为这是有史以来最愚蠢的功能/消息。谁想在配置管理工具中使用“可重复构建”这个答案似乎是唯一一个告诉我们警告的真正含义的答案。它非常适合用多个javac任务改装现有的Ant构建文件。presetdef元素正好位于project元素内部。@jwfearn:是否可以对非内置Ant任务使用类似的
presetdef
技巧?我曾在
scalac
中尝试过这一点,但由于较低级别的
build.xml
文件必须手动定义
scalac
任务,因此它们会覆盖我在顶层设置的任何内容。请注意,使用presetdef将导致ant警告javac任务已被重新定义。向每个javac任务添加includeantruntime可以避免这种情况。我不知道这个警告的坏处。但是这对于那些“需要”干净构建的人来说可能很有用。是的,presetdef给出了“试图覆盖任务javac的旧定义”,这对我帮助很大。我使用的是
setant\u OPTS=-Xms40M-Xmx512M-Dbuild.sysclasspath=ignore
  <presetdef name="javac">
    <javac includeantruntime="false" />
  </presetdef>
<javac destdir="out" includeantruntime="true">
  <src path="foo.java" />
  <src path="bar.java" />
</javac>