2012-04-05 19 views
0

私は、異なるJavaプロジェクト(Eclipseで設定)からメトリックを抽出する必要があります。これはMetrics Pluginです。 ANTビルドスクリプトを使用してこのプロセスを自動化しようとしています。ANTをJavaでプログラムで実行する

  1. は、これらのファイル
  2. を構築作成
  3. のEclipse
  4. でそれらを実行しようとするように構成それぞれのJavaプロジェクトでそれらを置く:

    私は意志のJavaユーティリティプロジェクトを作りました。

のbuild.xmlが、私はプログラム的にそれらを実行しようとすると、私は次のエラーを取得する、正常に動作している間:

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) 

私は、parse()メソッドが正常に動作していないと仮定していますなぜ私は理解していない。 build.xmlを手動で実行すると、XMLファイルが正しく作成されます。このビルドを実行するためにEclipseに行った唯一の変更は、実行>外部ツール>外部ツール設定> JREに移動して「ワークスペースと同じJREで実行」を選択することでした。

ビルドファイルは次のとおりです:

<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> 

注:[プロジェクト名]と[ouputFile]は、現在彼らの作成時に提供され、私はこのポストからそれらを省略しました。参考までに、私はEclipse Indigoを使用しています。次のようにルックスを失敗し コード:

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"); 
     } 
    } 
} 

答えて

4

課題の一つは、おそらくあなたがProjectHelperインスタンスを取得している方法です。試してみてください:

ProjectHelper helper = ProjectHelper.getProjectHelper(); 

また、あなたがの参照を追加し、プロパティを設定した後Project.init()を呼び出している意味を成していないようです。それぞれのビルドファイルに対して新しいプロジェクトを作成するだけではなく、initの前にと呼び出すと、addReferencesetPropertyと呼ばれることもあります。

関連する問題