2010-12-22 69 views
9

我正在Ant中定義一個新任務。 我出口它作爲一個罐子,並添加到我的構建文件:taskdef的類路徑?

<taskdef classname="X" classpath="Y.jar"/> 

的問題是,這無法在運行。 它告訴我,它沒有找到類。 通過將jar添加到類路徑中,它被糾正。

我的問題是:有沒有一種方法可以從Ant構建文件中引用我的jar,而無需更改類路徑?

回答

1

是的。我假設你看doctaskdef,它只顯示任務名稱和實現類。然而,taskdef小類typedef,如果你看doc爲後者,你會看到,還有一個classpath屬性。

但是,使用這個屬性意味着你的ant腳本綁定到一個特定的環境;他們不是很便攜。更好的方法是使用-libinvocation option將類路徑傳遞到Ant。

+2

如果您使用的是`CLASSPATH`環境變量,沒有。從環境設置中刪除它,並養成明確指定類路徑的習慣。否則,你會發現自己的一個難以調試的問題是庫從你的類路徑加載,你不期望它。或者別人不能運行你的代碼,因爲他/他沒有相同的`CLASSPATH`環境變量。 – Anon 2010-12-22 16:27:13

8

如果你知道你的jar的路徑,在ant腳本中你可以爲你自己的任務定義類路徑。

<taskdef name="myTaskName" classname="com.myorg.myclass"> 
    <classpath> 
    <pathelement location="pathToMyJar.jar"/> 
    </classpath> 
</taskdef>