2011-07-18 14 views
11

Czy istnieje samouczek na temat uruchamiania Ant z Java? Mam tutaj kod: Setting JAVA_HOME when running Ant from JavaUruchom mrówkę z Java

Ale nie udało mi się sprawić, żeby działało. Próbowałem znaleźć przykład lub samouczek, jak go używać.

Oto co mam do tej pory:

 
     Project p = new Project(); 
     p.setUserProperty("ant.file", buildFile.getAbsolutePath()); 
     p.fireBuildStarted(); 
     p.init(); 
     p.executeTarget("default"); 

Ale myślę, że ten błąd:

 
Exception in thread "main" Target "default" does not exist in the project "null". 
    at org.apache.tools.ant.Project.tsort(Project.java:1912) 
    at org.apache.tools.ant.Project.topoSort(Project.java:1820) 
    at org.apache.tools.ant.Project.topoSort(Project.java:1783) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368) 
    at com.arthrocare.vss2svn.VSS2SVN.newProcess(VSS2SVN.java:128) 
    at com.arthrocare.vss2svn.VSS2SVN.main(VSS2SVN.java:52) 
Java Result: 1 

Próbowałem określając projekt z:

 
p.setUserProperty("ant.project.name", "VSS Project"); 

ale bez powodzenia.

Podany plik ant jest poprawny, ponieważ działa poprawnie z wiersza poleceń.

UPDATE

Po pewnym Wyszukiwanie Mam tutaj: http://onjava.com/pub/a/onjava/2002/07/24/antauto.html?page=1

Jest to świetny poradnik.

Oto kod mam trochę wcześniej niż widząc kod w poniższym odpowiedź:

 
     Project project = new Project(); 
     ProjectHelper.configureProject(project, buildFile); 
     DefaultLogger consoleLogger = new DefaultLogger(); 
     consoleLogger.setErrorPrintStream(System.err); 
     consoleLogger.setOutputPrintStream(System.out); 
     consoleLogger.setMessageOutputLevel(Project.MSG_INFO); 
     project.addBuildListener(consoleLogger); 
     project.init(); 
     project.executeTarget(project.getDefaultTarget()); 

Ale z jakiegoś powodu nadal nie zadanie! Używam zadania Visual Source Safe, które musi odczytać wartość środowiska w czasie wykonywania, ale nie widzi tego z tym podejściem. ręcznie uruchamiając plik build.xml z następującego kodu działa:

 
     ProcessBuilder pb = new ProcessBuilder(); 
     Map env = pb.environment(); 
     String path = env.get("ANT_HOME"); 
     System.out.println(path); 
     pb.directory(new File(System.getProperty("user.home"))); 
     pb.command(path + System.getProperty("file.separator") 
       + "bin" + System.getProperty("file.separator") + "ant.bat"); 
     try { 
      Process p = pb.start(); 
     } catch (IOException ex) { 
      // 
     } 

Odpowiedz

14

Is there a tutorial on how to run Ant from Java?

Część moją odpowiedź do this question może pomóc:

See this article and this article :

File buildFile = new File("build.xml"); 
    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); 
    p.executeTarget(p.getDefaultTarget()); 
+0

Jak miałem zamiar pisać odpowiedź na własną rękę pytanie Widziałem twoją odpowiedź, która była bardzo podobna do mojej. Teraz otrzymuję błędy z powodu niemożności wykonania zadania. Uruchomienie tego samego zadania z wiersza poleceń działa doskonale. Dowolny pomysł? – javydreamercsw

+0

@javydreamercsw, Nie jestem pewien, czy rozumiem. Czy mówisz, że otrzymujesz błędy podczas wykonywania zadania z kodu Java? Jeśli tak, czy możesz zgłosić błąd? Możesz edytować pytanie i dodać to ... – Nivas

+0

Dodałem rejestrowanie na podstawie twojego linku do drugiej odpowiedzi i wydaje mi się, że po uruchomieniu go z poziomu Javy, nie widzę Użytkownika (zmienna środowiska Windows), że widzi z wiersza polecenia. – javydreamercsw