Ant称“构建测试”不存在,但我不明白它为什么要寻找“构建测试”

时间:2009-10-23 06:10:59

标签: ant

我正在运行一个Ant脚本,它是http://maestric.com/doc/java/spring/setup

教程的一部分

错误是:

建立失败 目标“buildtests”在项目“null”中不存在。

我正在通过eclipse运行Ant。

Ant脚本是:

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="build">

  <property file="build.properties"/>
  <property name="src.dir" value="src"/>
  <property name="build.dir" value="classes"/>

  <path id="build.classpath">
      <fileset dir="lib">
          <include name="*.jar"/>
      </fileset>
      <fileset dir="${appserver.lib}"> <!-- servlet API classes: -->
          <include name="servlet*.jar"/>
      </fileset>
      <pathelement path="${build.dir}"/>
  </path>  

  <target name="build">
      <mkdir dir="${build.dir}"/>
      <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"     deprecation="false" optimize="false" failonerror="true">
          <src path="${src.dir}"/>
      <classpath refid="build.classpath"/>
      </javac>
  </target>

  <target name="clean" description="Clean output directories">
      <delete>
          <fileset dir="${build.dir}">
              <include name="**/*.class"/>
          </fileset>
          </delete>
  </target>

</project>

我经常遇到Ant的问题,因为看起来错误是由我的脚本中从未声明过的东西引起的。

5 个答案:

答案 0 :(得分:1)

这听起来很奇怪。你有从Apache获得Ant吗?附近是否有build.xml文件,其中包含“buildtests”?这是基于unix的操作系统吗?如果是这样,通过执行“which”找到Ant脚本,然后检查其内容以查看它是否正在尝试调用其他构建文件。

答案 1 :(得分:1)

我将脚本复制到一个空目录中,我可以在创建src文件夹后成功调用脚本。

这意味着问题不在此脚本中。

您可以使用ant -p列出所有可用的目标,并检查它们是否与您要执行的脚本匹配。

答案 2 :(得分:1)

如果您通过Eclipse运行Ant,是否已检查项目的Ant Builder的构建属性设置?

右键单击包浏览器中的项目,然后转到“属性”。然后从左侧列表中选择“Builders”。你有一个Ant Builder吗?如果是这样,突出显示它并点击“编辑...”,然后选中“目标”选项卡以确保它不会调用您不期望的任何目标。

在Eclipse中通过Ant构建时遇到的大多数奇怪之处可以追溯到我正在使用的Ant Builder下的一些错误设置或未设置的属性。

==============================

或者,如果您尚未将Ant XML配置为通过Ant构建器使用,并且您只是直接调用Ant文件,请右键单击您的Ant文件并检查“运行配置...”下的设置“Run As”确保没有任何不合适的地方。它可能正在重新使用您之前的“build.xml”文件中的设置。

答案 3 :(得分:1)

当我编写一个Ant脚本来执行JUnit测试用例列表时,我曾遇到过类似的问题。脚本的一部分是:

<test name="${test.entry}" methods="${test.methods}"/>

其中 test.entry 指定测试类, test.methods 指定“以逗号分隔的要执行的测试用例方法名称列表”[见{{3 }}

但是,当我运行此脚本指定-Dtest.methods =“foo,bar”时,它会抛出一个错误“Target ...在项目中不存在”null“”,就像你的问题一样。

我只是将“foo,bar”之间的空格移到“foo,bar”中解决了这个问题。问题消失了!

所以也许您可能想要检查这样的问题是否是由参数中不必要的空格引起的。

答案 4 :(得分:0)

在Windows上,如果Eclipse项目的名称(以及路径/位置)包含空格,则尝试重命名项目以使用下划线。