Uruchamianie ANT programowo przez Javę

Mam wymaganie, w którym muszę wyodrębnić metryki z różnych projektów Java (skonfigurowanych w Eclipse) poprzezWtyczka Metrics. Próbuję zautomatyzować ten proces za pomocą skryptów kompilacji ANT.

Zrobiłem projekt narzędzia Java, który:

Utwórz te pliki kompilacjiUmieść je w odpowiednich projektach Java skonfigurowanych w EclipseSpróbuj je wykonać.

Podczas gdy plik build.xml działa poprawnie, podczas próby uruchomienia go programowo pojawia się następujący błąd:

<code>Exception in thread "main" ProjectHelper.parse() must be implemented in a helper plugin org.apache.tools.ant.ProjectHelper
at org.apache.tools.ant.ProjectHelper.parse(ProjectHelper.java:277)
at com.metrics.generator.MetricsGenerator.runAntScripts(MetricsGenerator.java:69)
at com.metrics.generator.MetricsGenerator.doAutomate(MetricsGenerator.java:43)
at com.metrics.generator.MetricsGenerator.main(MetricsGenerator.java:30)
</code>

Zakładam, że metoda parse () nie działa poprawnie, ale nie rozumiem dlaczego. Ręczne uruchomienie pliku build.xml (co oznacza, że ​​plik XML został poprawnie utworzony). Jedyną modyfikacją, jakiej musiałem dokonać, aby Eclipse uruchomił tę kompilację, było przejście do opcji Uruchom> Narzędzia zewnętrzne> Konfiguracja narzędzi zewnętrznych> JRE i wybranie „Uruchom w tym samym środowisku JRE co obszar roboczy”

Plik kompilacji jest następujący:

<code><project basedir="." default="init" name="projectName">
    <target name="init">
        <tstamp/>
    </target>

    <target depends="init" name="build">
        <eclipse.refreshLocal depth="infinite" resource="projectName"/>
        <metrics.enable projectName="projectName"/>
        <eclipse.build BuildType="full" ProjectName="projectName" errorFormat="xml" errorOut="errors.xml" failOnError="true"/>
        <metrics.export file="outputFile" projectName="projectName"/>
        </target>
</project>
</code>

Uwaga: [projectName] i [ouputFile] są obecnie udostępniane w momencie ich tworzenia, po prostu pominąłem je w tym poście. FYI, używam Eclipse Indigo. Kod, w którym zawodzi, wygląda następująco:

<code>private void runAntScripts(File[] projectFolders){
    BuildLogger logger = new DefaultLogger();
    logger.setOutputPrintStream(System.out);
    logger.setErrorPrintStream(System.out);
    logger.setMessageOutputLevel(Project.MSG_INFO);

    Project metricsProject  = new Project();
    metricsProject.addBuildListener(logger);

    ProjectHelper helper = new ProjectHelper();
    metricsProject.addReference("ant.projectHelper", helper);

    File buildFile;

    int totalFolders = projectFolders.length;
    for(int index = 0; index < totalFolders; index++){

        buildFile = new File(projectFolders[index], buildXMLFileName);

        if(buildFile.isFile()){
            helper.parse(metricsProject, buildFile);
            metricsProject.setProperty("ant.file", buildFile.getAbsolutePath());

            metricsProject.init();
            metricsProject.setBaseDir(projectFolders[index]);
            metricsProject.executeTarget("build");
        }
    }
}
</code>

questionAnswers(1)

yourAnswerToTheQuestion