Exécuter ant à partir de Java


Existe-t-il un tutoriel sur la façon d'exécuter Ant à partir de Java? J'ai obtenu du code d'ici: Définition de JAVA_HOME lors de l'exécution de Ant à partir de Java

Mais n'ont pas pu le faire fonctionner. J'ai essayé de trouver un exemple ou un tutoriel sur la façon de l'utiliser.

Voici ce que j'ai jusqu'à présent:

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

Mais je suppose que cette erreur:

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

J'ai essayé de spécifier le projet avec:

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

Mais pas de chance.

Le fichier ant spécifié est correct car il fonctionne parfaitement à partir de la ligne de commande.

Mise à JOUR

Après quelques recherches je suis arrivé ici: http://onjava.com/pub/a/onjava/2002/07/24/antauto.html?page=1

C'est un excellent tutoriel.

Voici le code que j'ai obtenu un peu plus tôt que de voir le code dans la réponse ci-dessous:

        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());

Mais pour une raison quelconque, la tâche échoue toujours! J'utilise une tâche sûre de source visuelle qui doit lire une valeur d'environnement au moment de l'exécution, mais elle ne la voit pas avec cette approche. Exécution de la construction.fichier xml manuellement et avec le code suivant fonctionne:

        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) {
            //
        }
Author: Community, 2011-07-18

1 answers

Existe-t-il un tutoriel sur la façon d'exécuter Ant à partir de Java?

Une partie de ma réponse à cette question {[7] } pourrait aider:

Voir cet article et cet 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());
 14
Author: Nivas, 2017-05-23 12:09:20