package testrunner.popup.actions;
import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
import org.apache.tools.ant.types.Path;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.MessageConsole;
import org.eclipse.ui.console.MessageConsoleStream;
public class AntExecuter {
public boolean executeAntTask(String buildXmlFileFullPath,String className,String methodName,String mode) {
System.getProperty("ANT_HOME");
boolean success = false;
MessageConsole myConsole = findConsole("Scenario Test");
MessageConsoleStream out = myConsole.newMessageStream();
MyLogger myLogger = new MyLogger();
myLogger.setErrorPrintStream(System.err);
myLogger.setOutputPrintStream(System.out);
myLogger.setMessageOutputLevel(Project.MSG_INFO);
Project project = new Project();
File buildFile = new File(buildXmlFileFullPath);
project.setUserProperty("ant.file", buildFile.getAbsolutePath());
project.addBuildListener(myLogger);
try {
project.fireBuildStarted();
project.init();
ProjectHelper projectHelper = ProjectHelper.getProjectHelper();
project.addReference("ant.projectHelper", projectHelper);
projectHelper.parse(project, buildFile);
project.setNewProperty("test", className.trim());
if (!(methodName.equals(""))) {
project.setNewProperty("method", methodName.trim());
}
if ("debug".equals(mode)) {
project.setNewProperty("debug", "true");
}
project.executeTarget("test");
project.fireBuildFinished(null);
project.getBuildListeners();
out.println("------------- Start Run Test Case -------------");
out.println(MyLogger.completeMessage);
out.println("------------- End Run Test Case -------------");
success = true;
} catch (BuildException buildException) {
project.fireBuildFinished(buildException);
}
return success;
}
private MessageConsole findConsole(String name) {
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager conMan = plugin.getConsoleManager();
IConsole[] existing = conMan.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName()))
return (MessageConsole) existing[i];
MessageConsole myConsole = new MessageConsole(name, null);
conMan.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
}
위의 코드를 사용하여 주어진 build.xml에서 ant 대상을 실행합니다.이 빌드 XML은 ant-contrib-1.0b1.jar에서 일부 작업을 사용합니다.이클립스 플러그인을 통해 ant 대상 실행
projectHelper.parse (project, buildFile);
아래 예외 이러한 해석 방법 복귀BUILD 을 실패 /home/sg40304/Projects/modularization/modules/core/system-testing/build.xml:19이 라인을 실행하는 동안 다음 오류가 발생 /home/sg40304/Projects/modularization/project-properties.xml:183 :이 줄을 실행하는 동안 다음 오류가 발생했습니다 : /home/sg40304/Projects/modularization/project-deps.xml:17 : 실행하는 동안 다음 오류가 발생했습니다. 이 줄은 /home/sg40304/Tools/build-tools/build/deps.xml:18 : $ {ant.home}/lib에 ant-contrib (1.0b2 이상)를 찾을 수 없습니다. 개미-있는 contrib 어느 한 날이 문제를 해결하는 데 도움이 수 http://ant-contrib.sourceforge.net/
에서 사용할 수 있으며. meachine에 개미의 contrib를 설치 (
ur 답장을 보내 주셔서 감사합니다.이 ant-contrib lib는 이미 anthome lib 폴더에 설치되어 있습니다. – user1828909