2010-12-22 104 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>