簡體   English   中英

螞蟻警告:“'includeantruntime'未設置”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM