Класс не найден с Ant, Ivy и JUnit - ошибка в build.xml?

Я пытаюсь получить простой (?) Тестовый проект, работающий с Ant, Ivy и JUnit. Основная идея заключается в том, что Ivy загрузит junit.jar, а затем Ant будет использовать его.

Обратите внимание, чтобаночка джунит находится на пути к классам потому что иначе (безclasspath элемент в задаче junit) Я вижу "<classpath> для <junit> должен включать junit.jar, если он не находится в собственном пути к классу Ant". Кроме того, приведенный ниже класс (junit.framework.TestListener) находится в junit-4.8.2.jar.

Тем не менее, когда я пытаюсьant test на следующее вижу:

test:

BUILD FAILED
/home/andrew/project/guice/hg/build.xml:33: java.lang.NoClassDefFoundError: junit/framework/TestListener
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
...
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.lang.ClassNotFoundException: junit.framework.TestListener
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
...

Итак, я думаю, что-то не так с моим build.xml? Какая?

Вот build.xml:

<project xmlns:ivy="antlib:org.apache.ivy.ant" 
         name="java-example" default="dist" basedir=".">

  <description>
    simple example build file
  </description>

  <property name="src" location="src"/>
  <property name="build" location="build"/>
  <property name="dist" location="dist"/>
  <property name="lib" location="lib"/>

  <path id="lib.path">
    <fileset dir="${lib}"/>
  </path>

  <target name="init">
    <tstamp/>
    <mkdir dir="${build}"/>
  </target>

  <target name="compile" depends="init,resolve"
          description="compile the source">
    <javac srcdir="${src}" destdir="${build}" classpathref="lib.path"
           includeantruntime="false">
      <compilerarg value="-Xlint"/>
    </javac>
  </target>

  <target name="test" depends="compile"
          description="run the tests">
    <junit>
      <classpath refid="lib.path"/>
      <batchtest>
        <fileset dir="${build}">
          <include name="**/*Test.class"/>
        </fileset>
      </batchtest>
    </junit>
  </target>

  <target name="dist" depends="compile"
          description="generate the distribution">
    <mkdir dir="${dist}/lib"/>
    <jar jarfile="${dist}/lib/example-${DSTAMP}.jar" basedir="${build}"/>
  </target>

  <target name="clean"
          description="clean up">
    <delete dir="${build}"/>
    <delete dir="${dist}"/>
  </target>

  <target name="resolve"
          description="download required dependencies">
    <ivy:retrieve/>
  </target>

</project>

и существующая структура каталогов после компиляции:

.
├── build
│   └── com
│       └── isti
│           └── example
│               ├── AppendToList.class
│               ├── DumpToStdout.class
│               ├── LimitedCounter.class
│               ├── MessageSink.class
│               ├── MessageSource.class
│               └── SinkToSourceTest.class
├── build.xml
├── dist
│   └── lib
│       └── example-20130412.jar
├── ivy.xml
├── lib
│   ├── junit-4.8.2.jar
│   ├── junit-4.8.2-javadoc.jar
│   └── junit-4.8.2-sources.jar
├── README.md
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── isti
    │               └── example
    │                   ├── AppendToList.java
    │                   ├── DumpToStdout.java
    │                   ├── LimitedCounter.java
    │                   ├── MessageSink.java
    │                   └── MessageSource.java
    └── test
        └── java
            └── com
                └── isti
                    └── example
                        └── SinkToSourceTest.java

Обновить Между прочим,ant -lib lib test (явно указав каталог lib) работает. И есть много запутанных описаний обработки этого в случайных результатах веб-поиска - но у меня сложилось впечатление, что вышеуказанный подход согласуется споследние документы (Я использую муравей 1.9) - см. Пункт 5. Так что я думаю, что это может бытьошибка; ошибка.

Ответы на вопрос(1)

Ваш ответ на вопрос