我正在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