2011-05-07 107 views
2

我的build.XML如下所示。如何使用Ant使用外部jar文件创建jar

<property name="src.dir"  value="src"/> 
<property name="lib.dir"  value="lib"/> 
<property name="build.dir" value="build"/> 
<property name="classes.dir" value="${build.dir}/classes"/> 
<property name="jar.dir"  value="${build.dir}/jar"/> 
<property name="main-class" value="HighAvailablity"/> 

<path id="classpath"> 
    <fileset dir="${lib.dir}" includes="**/*.jar"/> 
</path> 

<target name="clean"> 
    <delete dir="${build.dir}"/> 
</target> 

<target name="compile"> 
    <mkdir dir="${classes.dir}"/> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/> 
</target> 

<target name="jar" depends="compile"> 
    <mkdir dir="${jar.dir}"/> 
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"> 
     <manifest> 
      <attribute name="Main-Class" value="${main-class}"/> 
     </manifest> 
    </jar> 
</target> 

<target name="run" depends="jar"> 
    <java fork="true" classname="${main-class}"/> 
    <classpath> 
     <path refid="classpath"/> 
     <path location="${jar.dir}/${ant.project.name}.jar"/> 
    </classpath> 
</target> 

<target name="clean-build" depends="clean,jar"/> 

<target name="main" depends="clean,run"/> 

当使用ant命令来运行,我得到了下面的错误。

Could not create task or type of type: classpath. 

Ant could not find the task or a class this task relies upon. 

This is common and has a number of causes; the usual 
solutions are to read the manual pages then download and 
install needed JAR files, or fix the build file: 
- You have misspelt 'classpath'. 
    Fix: check your spelling. 
- The task needs an external JAR file to execute 
    and this is not found at the right place in the classpath. 
    Fix: check the documentation for dependencies. 
    Fix: declare the task. 
- The task is an Ant optional task and the JAR file and/or libraries 
    implementing the functionality were not found at the time you 
    yourself built your installation of Ant from the Ant sources. 
    Fix: Look in the ANT_HOME/lib for the 'ant-' JAR corresponding to the 
    task and make sure it contains more than merely a META-INF/MANIFEST.MF. 
    If all it contains is the manifest, then rebuild Ant with the needed 
    libraries present in ${ant.home}/lib/optional/ , or alternatively, 
    download a pre-built release version from apache.org 
- The build file was written for a later version of Ant 
    Fix: upgrade to at least the latest release version of Ant 
- The task is not an Ant core or optional task 
    and needs to be declared using <taskdef>. 
- You are attempting to use a task defined using 
    <presetdef> or <macrodef> but have spelt wrong or not 
    defined it at the point of use 

Remember that for JAR files to be visible to Ant tasks implemented 
in ANT_HOME/lib, the files must be in the same directory or on the 
classpath 

Please neither file bug reports on this problem, nor email the 
Ant mailing lists, until all of these causes have been explored, 
as this is not an Ant bug. 

Total time: 2 seconds 

如何解决此问题?

回答

1

貌似在run目标小错误 - 类路径应该是java任务的子元素,如:

<java fork="true" classname="${main-class}"> 
    <classpath> 
     <path refid="classpath"/> 
     <path location="${jar.dir}/${ant.project.name}.jar"/> 
    </classpath> 
</java> 

否则蚂蚁解释目标作为Java任务后跟一个类路径的任务 - 并且没有类路径任务。

这是最糟糕的错误消息之一 - 在新版本的Ant中,它被错误地'缩短'了。

+0

雅...它的工作很好.....感谢您的快速响应.... – ssbecse 2011-05-07 07:44:53

相关问题