Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Classpath for taskdef?

I am defining a new task in Ant. I exported it as a jar and added to my buildfile:

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

The problem is that this fails at runtime. It tells me it didn't find the class. By adding the jar to the classpath, it is corrected.

My question is: Is there a way that I can refer to my jar from the Ant buildfile, without changing the classpath?

like image 235
computealot Avatar asked Dec 22 '10 16:12

computealot


2 Answers

If you know the path of your jar, inside ant script you can define the classpath for your own task.

<taskdef name="myTaskName" classname="com.myorg.myclass">
  <classpath>
    <pathelement location="pathToMyJar.jar"/>
  </classpath>
</taskdef>
like image 189
guinoise Avatar answered Oct 11 '22 23:10

guinoise


Yes. I'm assuming that you looked at the doc for taskdef, which just shows the task name and implementing class. However, taskdef subclasses typedef, and if you look at the doc for the latter you'll see that there's also a classpath attribute.

HOWEVER, using this attribute means that your ant scripts are tied to a particular environment; they aren't very portable. A far better approach is to pass the classpath into Ant, using the -lib invocation option.

like image 22
Anon Avatar answered Oct 11 '22 22:10

Anon