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