【问题标题】:Error with target in building by build.xmlbuild.xml 构建时的目标错误
【发布时间】:2014-11-30 00:32:32
【问题描述】:

我在 Eclipse 环境中打开了一个包含 build.xml 和 ivy.xml 的项目。 在我应用 Run As..>Ant Built by right click build.xml 后,我遇到了这个错误:

    BUILD FAILED
Target "retrieve" does not exist in the project "aaa". It is used from target "compile".

我的 build.xml 文件:

<project name="WOE" default="build">

    <!--<import file="../build/ivy-targets.xml"/>-->

    <property name="dir.base" location="."/>
    <!--<property name="dir.repos" location="${dir.base}/../repository/modules"/>-->
    <property name="dir.src" location="${dir.base}/src/java"/>
    <property name="dir.lib" location="${dir.base}/src/lib"/>
    <property name="dir.ivy.lib" location="${dir.base}/lib"/>
    <property name="dir.build" location="${dir.base}/build"/>
    <property name="dir.classes" location="${dir.build}/classes"/>
    <property name="module.jar" location="${dir.build}/WOEParse.jar"/>

    <property name="dir.doc" location="${dir.base}/doc"/>
    <property name="dir.javadoc" location="${dir.doc}/api"/>

    <path id="classpath">
        <fileset dir="${dir.lib}" includes="*.jar"/>
        <fileset dir="${dir.ivy.lib}/default" includes="*.jar"/>
        <!--<pathelement path="${dir.repos}/edu.stanford/BaselineNLProcessor/521/jars/baseline-nlprocessor-2010-06-22-521.jar" />-->
    </path>

    <path id="run.classpath">
        <path refid="classpath"/>
        <pathelement location="${module.jar}"/>
    </path>

    <target name="clean" description="Deletes artifacts produced by build">
        <delete dir="${dir.build}"/>
        <delete dir="${dir.javadoc}"/>
        <delete dir="${dir.ivy.lib}"/>
    </target>

     <target name="compile" depends="retrieve" description="Compiles source code">
        <mkdir dir="${dir.classes}"/>
        <javac destdir="${dir.classes}"
               debug="true"
               target="1.6">
            <classpath refid="classpath"/>
            <src path="${dir.src}"/>
        </javac>

    </target>

    <target name="build" depends="compile" description="Builds module JAR file">
        <jar jarfile="${module.jar}">
            <fileset dir="${dir.classes}" includes="**/*.class"/>
            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
            </manifest>
        </jar>
    </target>

    <target name="run" depends="build" description="Processes a simple example file">
        <java classname="edu.washington.cs.woe.WOEParse" fork="true" failonerror="true">
            <jvmarg value="-Xmx1G"/>
            <classpath refid="run.classpath"/>
            <arg line="-inFile ./light-config/data/testSentenceFile -cfDir ./light-config/"/>
        </java>
    </target>

    <target name="javadoc" description="Builds javadoc html files for this source code">
        <mkdir dir="${dir.javadoc}"/>
        <javadoc classpathref="classpath" destdir="${dir.javadoc}" sourcepath="${dir.src}">
            <packageset dir="${dir.src}" defaultexcludes="yes">
            </packageset>
        </javadoc>
    </target>


</project>

此部分出现错误:

我改成

<target name="compile"  description="Compiles source code">

但它显示另一个错误:

Buildfile: D:\eclipse workspace\WOE\build.xml
compile:
    [mkdir] Created dir: D:\eclipse workspace\WOE\build\classes
    [javac] D:\eclipse workspace\WOE\build.xml:38: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 42 source files to D:\eclipse workspace\WOE\build\classes

BUILD FAILED
D:\eclipse workspace\WOE\build.xml:38: D:\eclipse workspace\WOE\lib\default does not exist.

Total time: 328 milliseconds

我该怎么办? eclipse env 有什么问题吗?(我在 Eclipse env 中没有任何 ant 插件等),如果有,我应该在 eclipse 中使用哪个插件才能正确打开此类项目?

请帮助我。 谢谢

【问题讨论】:

  • 向我们展示 build.xml
  • @greg-449:好的。我做到了。

标签: java eclipse ant ivy antbuilder


【解决方案1】:

错误在这里:

 <target name="compile" depends="retrieve"

要么使用名称“retrieve”声明目标,要么删除依赖项。

【讨论】:

  • 你的意思是我把它改成: 或者 没有对整个项目的破坏性影响?我对目标一无所知!
【解决方案2】:

这是通过从另一个构建文件复制粘贴创建的构建文件吗?

第一期

你有一个编译目标,它依赖于另一个不存在的名为“retrieve”的目标

 <target name="compile" depends="retrieve" description="Compiles source code">
    <mkdir dir="${dir.classes}"/>
    <javac destdir="${dir.classes}"
           debug="true"
           target="1.6">
        <classpath refid="classpath"/>
        <src path="${dir.src}"/>
    </javac>
</target>

在使用 ivy 时,有一个首先解析(必要时下载)第 3 方 jar 依赖项的目标是很常见的。这是编译代码所必需的。

第二期

您的第二个错误是由构建的以下部分引发的:

<path id="classpath">
    <fileset dir="${dir.lib}" includes="*.jar"/>
    <fileset dir="${dir.ivy.lib}/default" includes="*.jar"/>
    <!--<pathelement path="${dir.repos}/edu.stanford/BaselineNLProcessor/521/jars/baseline-nlprocessor-2010-06-22-521.jar" />-->
</path>

代码期望在 ${dir.ivy.lib}/default 目录中找到 jars。这可能是丢失检索任务的一部分。

使用常春藤的工作示例

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    转到首选项,选中“忽略所有构建文件问题”。

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多