2010-11-08 52 views
13

我使用Apache Thrift生成target/generated-sources中的代碼。maven無法在編譯階段的生成源中添加文件

Thrift編譯器生成一個名爲gen-java的目錄,其中包含所有的Java代碼。當我執行mvn compile時,代碼在target/generated-source/gen-java中正確生成,但在編譯階段,它抱怨找不到在gen-java中定義的類。

在我的理解中,Maven 2自動添加生成的源代碼,是嗎?

如果我的測試代碼也取決於generated-sources,那麼我是否必須手動指定編譯器包含?

+0

[爲什麼Maven跳過我的自定義生成源執行?](http://stackoverflow.com/questions/18721684/why-is-maven-skipping-over-my-custom-generate-sources - 執行) – ArtB 2014-01-30 18:11:27

+0

[爲什麼Maven跳過我的自定義生成源執行?](http://stackoverflow.com/q/18721684/1523648)是關於antrun插件的配置錯誤,這個問題不是。 – oberlies 2014-01-31 08:49:48

回答

16

在我的理解,maven 2自動添加生成的來源,是嗎?

沒有自動,插件生成源代碼通常處理,通過添加其輸出目錄(類似target/generated-sources/<tool>按照慣例)作爲源目錄到POM,使得其將在編譯階段以後包括。

一些執行得不好的插件不適合你,你必須自己添加目錄,例如使用Build Helper Maven Plugin

而且由於您沒有提供任何POM代碼片段,任何鏈接,我不能再多說什麼了。

如果我的測試代碼還取決於生成的來源,我必須手動指定編譯器包括?

正如我所說的,生成的源代碼通常被添加爲源目錄並編譯,因此可以在測試類路徑中使用,而無需執行任何操作。

+1

_plugins生成源代碼通常通過將它們的輸出目錄作爲源目錄添加到POM_來處理該源代碼 您是否有這種配置的任何示例?我試圖創建一個不那麼「實施不佳」的插件,它會生成代碼,但我無法找到包含輸出目錄的最佳方式,而無需將其配置到「客戶端」一側。 – 2012-09-18 10:57:45

+0

@RémiM也許[這個答案](http://stackoverflow.com/a/19682602/254477)有幫助嗎? – ArtB 2014-01-30 17:51:15

+1

@Pascal關於'/ target/generated-sources /'本身呢,是否需要添加到構建路徑? – ArtB 2014-01-30 18:10:49

相關問題