with type example application java ant gradle

java - type - Ejecutar el script Ant de Gradle



gradle project java (2)

He solucionado el siguiente error de Gradle:

Execution failed for task '':test''. > Problem: failed to create task or type junit Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found. This looks like one of Ant''s optional components. Action: Check that the appropriate optional JAR exists in -ANT_HOME/lib -the IDE Ant configuration dialogs

agregando las siguientes líneas en mi script Ant build.xml justo antes de mi tarea Ant <junit>

<taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" classpath="/usr/share/ant/lib/ant-junit.jar:/usr/share/ant/lib/ant-junit4.jar" />

Esta es la test completa de objetivo Ant:

<target name="test" depends="test_compile"> <mkdir dir="${test.report.dir}" /> <!-- Required for Gradle --> <taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" classpath="/usr/share/ant/lib/ant-junit.jar:/usr/share/ant/lib/ant-junit4.jar" /> <junit printsummary="yes" fork="true" haltonfailure="on"> <classpath refid="classpath_test"/> <batchtest> <fileset dir="${test.src.dir}"> <include name="**/*Tester.java" /> </fileset> </batchtest> </junit> </target>

La respuesta sobre "JUnitTask no se encontró" de los asistentes ha sido una ayuda útil para encontrar mi solución anterior.

Identifica el problema

Para entender el problema, build.xml los scripts build.xml y build.gradle para comparar las salidas Ant y Gradle. Ver también la respuesta de ¿Cómo obtener "gradle" tiene detalles de salida similares a "hormiga"? para algunos detalles.

La diferencia interesante está en el parámetro -classpath :

Usando hormiga

/some/path/myApplication.jar /usr/share/java/ant-launcher-1.9.7.jar /usr/share/ant/lib/ant.jar /usr/share/ant/lib/junit.jar /usr/share/ant/lib/ant-junit.jar /usr/share/ant/lib/ant-junit4.jar

Usando Gradle

/some/path/myApplication.jar /usr/lib/gradle/3.2.1/lib/ant-launcher-1.9.6.jar /usr/lib/gradle/3.2.1/lib/ant-1.9.6.jar

Diferencia

Podemos observar que Gradle usa su propio ant-launcher-1.9.6.jar y ant-1.9.6.jar . Pero Gradle no usa los JAR de la instalación de Ant ( /usr/share/ant/lib/*jar son enlaces simbólicos a /usr/share/java/*jar ).

A largo plazo

En esta discusión sobre la integración de Ant JUnit taskdef , Luke Daley confirma en noviembre de 2013;

Gradle usa su propia ''instancia'' de hormiga y no se molesta en usar lo que está instalado en $ANT_HOME

En esta discusión sobre JUnit 5, Eric Wendelin expresó la prioridad de integrar más JUnit dentro del núcleo de Gradle.

Por lo tanto, la solución a largo plazo es dejar de usar JUnit de los scripts de Ant y convertirlos en sintaxis de Gradle.

Estoy tratando de ejecutar script ant de Gradle, pero tengo esta excepción:

Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found.

Y prefiero usar ant-junit desde libs locales, pero no sé cómo, soy bastante nuevo para Gradle.

Encontré este código

configurations { antClasspath } dependencies { antClasspath ''org.apache.ant:ant-junit4:1.8.3'' } ClassLoader antClassLoader = org.apache.tools.ant.Project.class.classLoader configurations.antClasspath.each { File f -> antClassLoader.addURL(f.toURI().toURL()) }

Pero no sé lo que tengo que cambiar si el archivo jar ya está en la carpeta mt lib. No quiero usar maven repo.