我正在Ant中定義一個新任務。 我出口它作爲一個罐子,並添加到我的構建文件:taskdef的類路徑?
<taskdef classname="X" classpath="Y.jar"/>
的問題是,這無法在運行。 它告訴我,它沒有找到類。 通過將jar添加到類路徑中,它被糾正。
我的問題是:有沒有一種方法可以從Ant構建文件中引用我的jar,而無需更改類路徑?
我正在Ant中定義一個新任務。 我出口它作爲一個罐子,並添加到我的構建文件:taskdef的類路徑?
<taskdef classname="X" classpath="Y.jar"/>
的問題是,這無法在運行。 它告訴我,它沒有找到類。 通過將jar添加到類路徑中,它被糾正。
我的問題是:有沒有一種方法可以從Ant構建文件中引用我的jar,而無需更改類路徑?
是的。我假設你看doc爲taskdef
,它只顯示任務名稱和實現類。然而,taskdef
小類typedef
,如果你看doc爲後者,你會看到,還有一個classpath
屬性。
但是,使用這個屬性意味着你的ant腳本綁定到一個特定的環境;他們不是很便攜。更好的方法是使用-lib
invocation option將類路徑傳遞到Ant。
如果你知道你的jar的路徑,在ant腳本中你可以爲你自己的任務定義類路徑。
<taskdef name="myTaskName" classname="com.myorg.myclass">
<classpath>
<pathelement location="pathToMyJar.jar"/>
</classpath>
</taskdef>
如果您使用的是`CLASSPATH`環境變量,沒有。從環境設置中刪除它,並養成明確指定類路徑的習慣。否則,你會發現自己的一個難以調試的問題是庫從你的類路徑加載,你不期望它。或者別人不能運行你的代碼,因爲他/他沒有相同的`CLASSPATH`環境變量。 – Anon 2010-12-22 16:27:13