私はEclipseプラグインを持っており、そのプラグイン内でantを呼び出して、junitテストを実行し、そのテストのカバレッジを取得するなど、いくつかのものを作成する必要があります(この目的にはjacocoプラグインを使用します)...
私のbuild.xml
<project name="Calculadora" default="rebuild" basedir="." xmlns:jacoco="antlib:org.jacoco.ant">
<property name="src" location="./src"/>
<property name="bin.dir" location="./bin"/>
<property name="bin.report.dir" location="${bin.dir}/report"/>
<property name="bin.exec.file" location="${bin.dir}/jacoco.exec"/>
<property name="junit.out.dir" location="${bin.report.dir}/junit/xml"/>
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="/tmp/jacocoant4002041518230825590.jar"/>
</taskdef>
<path id="classpath">
<pathelement location="${bin.dir}"/>
<pathelement location="${src}"/>
<pathelement location="/usr/lib/eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>
</path>
<target name="clean">
<mkdir dir="${bin.report.dir}"/>
<mkdir dir="${junit.out.dir}"/>
</target>
<target name="test" depends="clean">
<jacoco:coverage destfile="${bin.exec.file}">
<junit fork="true" forkmode="once">
<classpath refid="classpath"/>
<formatter type="xml" usefile="true"/>
<test name="functions.test.ReadFile" todir="${junit.out.dir}"/>
</junit>
</jacoco:coverage>
</target>
<target name="report" depends="test">
<jacoco:report>
<executiondata>
<file file="${bin.exec.file}"/>
</executiondata>
<structure name="">
<classfiles>
<fileset dir="${bin.dir}"/>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${src}"/>
</sourcefiles>
</structure>
<xml destfile="${bin.report.dir}/report.xml"/>
</jacoco:report>
<junitreport todir="${junit.out.dir}">
<fileset dir="${junit.out.dir}">
<include name="TEST-*.xml"/>
</fileset>
</junitreport>
</target>
<target name="rebuild" depends="clean,test,report"/>
</project>
Java で Ant を呼び出すコード:
// Creates a new Project object
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
p.addBuildListener(consoleLogger);
p.executeTarget(p.getDefaultTarget());
しかし、プラグインを実行すると、次のエラーが発生します。
build.xml:34: java.lang.ClassNotFoundException: org.apache.tools.ant.taskdefs.optional.junit.JUnitTaskMirrorImpl at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.createMirror(JUnitTask.java: 708) org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.setupJUnitDelegate(JUnitTask.java:745) org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java: 755) org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
で org.jacoco.ant.CoverageTask.execute(CoverageTask.java:95) で org.apache.tools.ant.UnknownElement.execute (UnknownElement.java:291)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)でorg.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) で .invoke(Method.java:616) org.apache.tools.ant.Task.perform(Task.java:348) でorg.apache.tools.ant.Target.execute(Target.java:390) at org.apache.tools.ant.Target.performTasks(Target.java:411) at org.apache.tools.ant.Project.executeSortedTargets( Project.java:1360)
org.apache.tools.ant.Project.executeTarget (Project.java:1329) で 原因: java.lang.ClassNotFoundException: org.apache.tools.ant.taskdefs.optional.junit.JUnitTaskMirrorImpl で org.apache.tools. org.Apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1336) の ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1386) 52) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.createMirror(JUnitTask.java:701) ... 19 もっと見る
何が起こっていますか?私が間違っていることは何ですか?
前もって感謝します