2012-11-16 9 views
2
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를 설치 (

답변

관련 문제