ANT | 尝试覆盖旧的 javac 任务定义 错误

4

我正在尝试在ANT中构建一个JAR文件。以下是生成JAR文件的代码。我不知道为什么会出现这个错误(“试图覆盖任务javac的旧定义”)。有时它不会生成JAR文件。

<?xml version="1.0" ?> 
<project name="HelloWorld" default="compress">

    <presetdef name="javac">
            <javac includeantruntime="false" />
    </presetdef>

    <target name="init">
        <mkdir dir="build/classes" />
        <mkdir dir="dist" />
    </target>

    <target name="compile" depends="init">
        <javac srcdir="src" destdir="build/classes"/>
    </target>  

    <target name="compress" depends="compile">
            <jar destfile="dist/sample.jar" basedir="build/classes" />

    </target>

    <target name="execute" depends="compile">
        <java classname="src" classpath="build/classes" />
    </target> 

    <target name="clean">

    </target>

</project>

输出结果如下:
Buildfile: E:\GAD project\project\GAD\build.xml
Trying to override old definition of task javac
init:
    [mkdir] Created dir: E:\GAD project\project\GAD\dist
compile:
compress:
      [jar] Building jar: E:\GAD project\project\GAD\dist\sample.jar
BUILD SUCCESSFUL
Total time: 1 second

请告诉我如何纠正错误信息?

3个回答

4

让我们试试这个

<presetdef name="my.javac">
            <javac includeantruntime="false" />
    </presetdef>


    <target name="compile" depends="init">
        <my.javac srcdir="src" destdir="build/classes"/>
    </target>  

太好了。已经完成了。但是生成jar文件需要一些时间。你能否给我一些建议?jar文件大小约为1909 kb。 - sree

1

通常情况下,这种情况发生在从不同来源多次加载ant任务的情况下。
例如:

    <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="${location1}/ant-contrib/ant-contrib-1.0b3.jar"/>
        </classpath>
    </taskdef>
    
    <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="${location2}/ant-contrib/ant-contrib-1.0b3.jar"/>
        </classpath>
    </taskdef>

    <target name="ping">
        <echo message="pong"/>
    </target>

Output:
..
Trying to override old definition of task addCredentials
Trying to override old definition of task clearCredentials
Trying to override old definition of task purgeExpiredCookies
Trying to override old definition of task postMethod
Trying to override old definition of task getMethod
Trying to override old definition of task headMethod
Trying to override old definition of task importurl
ping:
     [echo] pong
BUILD SUCCESSFUL

0

我在我的 build.xml 文件中有以下的导入,这是导致问题的原因。

<import file="${sdk.dir}/tools/ant/build.xml" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接