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

让我知道如何纠正错误消息。?

4

3 回答 3

4

让我们试试这个

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


    <target name="compile" depends="init">
        <my.javac srcdir="src" destdir="build/classes"/>
    </target>  
于 2013-08-28T11:44:46.453 回答
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
于 2022-02-25T12:20:25.687 回答
0

我的 build.xml 中有以下导入,这导致了问题

<import file="${sdk.dir}/tools/ant/build.xml" />
于 2016-06-13T17:51:48.867 回答