Suresh Koya是接近的,但有幾個問題:如果commons-lang.jar
實際上是在當前目錄
- Suresh的方式才起作用。
- 如果罐子被稱爲
commons-lang-2.6.jar
之類的東西,它也不起作用。
第一個可以通過將<filepath>
子實體添加到<available>
來修復。這給<available>
條件一個目錄路徑來搜索jar。但是,如果用戶下載了commons-lang
版本號(就像從Maven存儲庫中獲得的版本號一樣),它將不起作用。
爲了解決這個問題,你需要使用類似<fileset>
的東西來創建一個路徑資源,然後檢查你是否拿起任何版本的commons-lang jarfile。您可以在下面看到我正在查找以commons-lang
開頭並具有.jar
後綴的任何文件。
後,我把我的資源,我可以用一個<resoucecount>
條件,看我拿起commons-lang
任何版本:
<path id="commons-lang.path">
<fileset dir="${lib.dir}">
<incude name="commons-lang*.jar"/>
</fileset>
</path>
<fail message="Missing commons-lang Jar">
<condition>
<resourcecount refid="commons-lang.path"
when="equals" count="0"/>
</condition>
現在,如果我知道一些關於公共琅罐子,我可以使用的<available>
條件在我的類路徑來搜索特定類:
<fail message="Can't find commons-lang Jar">
<condition>
<not>
<available classname="org.apache.commons.lang.Entities">
<classpath refid="compile.classpath"/>
</available>
</not>
</condition>
</fail>
釷無論它叫什麼,都會發現commons-lang jar。
如果你感興趣的常春藤,我在GitHub一個項目,使得它很容易常春藤添加到整個開發網站。第三方依賴管理是要走的路。使用艾維很棒,因爲它與Ant集成。 Maven和Gradle有它們的優點,但是您必須重新構建整個構建基礎架構才能使用它們。
你的意思是編譯實際編譯沒有所需的依賴關係? – weltraumpirat