2011-08-17 82 views
1

我正嘗試在基於構建器的java項目中使用代碼生成器。我想...在構建器項目中使用生成的源代碼

  • 調用發電機
  • 編譯生成的類,它們封裝
  • 日食查看生成的東西(即已經在的.classpath包含這些源)

我花了很多時間搜索一個完整的例子,但無濟於事。這裏的例子:https://cwiki.apache.org/confluence/display/BUILDR/How+to+generate+sources+before+compilation

給出了很多錯誤。這就是我已經試過:

給了我這樣的錯誤:

RuntimeError: Circular dependency detected: TOP ... 

所以我明明做的事情非常非常錯誤的。我很高興看到一個使用代碼生成的工作示例或項目。

回答

1

我終於得到它從buildr郵件列表幫助工作。對於任何感興趣的人:提到的例子here包含一個問題。這樣的:

compile.from generate 

應該是:

compile.from generate.to_s 

現在它精美的作品!如果'compile.from'指向另一個位置,buildr也會自動擴展eclipse的.classpath(以及想法,萬一你使用它)。

0

您通過調用'extras'項目中的父項目來導致循環依賴項。 在該行:Java.classpath < <項目(「發電機」)

也許你應該把一切都在同一水平上,這也是什麼例子顯示。 在這種情況下,您的「生成」引用將無法使用,因爲它在「額外」範圍內。

像這樣(未經):

define "generator" do 
    generate = file(_("target/generated-sources") => sources).to_s do |dir| 
     p 'calling generator..' 
     Java.classpath << ALL_COMMON_MODULES 
     Java.classpath << projects('generator') 
     Java.org.foo.generator.Main.main(['../modules/daos', 'target/generated-sources']) 
     sources = FileList[_("src/main/jeannie/*.*")] 
     puts 'generating...' 
     mkdir_p dir.to_s # ensure directory is created 
    end 
    compile.with ALL 
    compile.from generate 
    end 
+0

感謝您的參與!不幸的是它沒有工作。 buildr no產生這個:`javac:invalid flag:/ home/me/projects/gen/generator/target/generated/sources` – alvi 2011-08-17 15:14:08

相關問題