2012-12-11 96 views
0

我需要生成一些Java源代碼,然後由Maven編譯。問題是生成這些源的遺留代碼是用Java編寫的。使用該解決方案(變通)是有:使用Maven使用Ant腳本生成Java源代碼

  • 項目中與生成的Java源代碼
  • 依賴於項目A和Maven中調用antrun在項目執行中的類
  • 項目B A

當你建立B項目,會發生什麼是Maven將:

  • 編譯項目A(代碼生成源),並做其他項目中的pom.xml的告訴它做的事。
  • antrun這些類(由項目B的pom.xml中的要求) - 從而源將得到產生並添加到項目B
  • 編譯項目乙源

這是因爲Antrun需要在項目中的類A在執行時已經被編譯。 然而,這是一個醜陋的解決方案,項目A和B實際上應該只是一個項目。 我知道我應該使用:

<phase>generate-sources</phase> 

,我看到使用Groovy的例子(http://blog.retep.org/2009/11/07/using-groovy-to-generate-java-sources- ),但我想知道是否有任何簡單的方法來做到這一點,同時在一個項目中擁有所有內容,而不必將代碼生成從Java更改爲Groovy或其他。

謝謝。

+0

我更喜歡將這兩個項目放在不同的maven模塊中。 –

回答

2

我對這種情況使用Groovy,但如果你不想這樣做,那麼有兩個單獨的項目是正確的。

而我不會從另一個項目編譯一個項目,我只是把它們留作單獨的項目。通常代碼生成器項目不會像「真實」項目那樣頻繁更改,所以不需要一直構建它。

+1

+1 - 我還記得[你]哪個問題解決了這個問題,並提供了一個工作解決方案[this](http://stackoverflow.com/questions/6691723/m2e-generated-code-with-exec-maven-plugin)。 – FrVaBe

+0

@FrVaBe真的,只有我早已切換到IntelliJ並不再有這樣的問題:-) –

+0

我仍然喜歡eclipse,我很感謝社區的努力來增強它 - 但是maven集成(或者它是eclipse Builder概念?)真的很「奇怪」。 – FrVaBe

相關問題