¿Clase no encontrada con Ant, Ivy y JUnit - error en build.xml?

Estoy tratando de obtener un proyecto de prueba simple (?) Trabajando con Ant, Ivy y JUnit. La idea básica es que Ivy descargará junit.jar y luego Ant lo usará.

Tenga en cuenta queel junit jar está en el classpath&nbsp;porque de lo contrario (sin elclasspath&nbsp;elemento en la tarea junit) Veo "<classpath> para <junit> debe incluir junit.jar si no está en la propia classpath de Ant". Además, la clase dada a continuación (junit.framework.TestListener) está en junit-4.8.2.jar.

Sin embargo, cuando lo intentoant test&nbsp;en lo siguiente veo:

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)
...

Entonces, ¿supongo que algo está mal con mi build.xml? ¿Qué?

Aquí está el 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>

y la estructura de directorios existente después de la compilación:

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

Actualizar&nbsp;De paso,ant -lib lib test&nbsp;(dando explícitamente el directorio lib) funciona. Y hay muchas descripciones confusas del manejo de esto en los resultados aleatorios de búsqueda en la web, pero mi impresión es que el enfoque anterior es consistente con elúltimos documentos&nbsp;(Estoy usando ant 1.9) - vea el punto 5. Así que estoy pensando que esto puede ser uninsecto; insecto.