2012-05-24 21 views
11

我從wsdl文件生成Java源代碼。這些源不受版本控制(但wsdl是)。我們在maven中使用cxf-codegen插件,生成的類在<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>中生成。在maven中定義額外的源代碼目錄

這工作都很好在maven。

我必須在Intelij Idea中將此目錄定義爲添加源目錄。 (通常排除target)。

但是,每次我將maven項目重新導入到InteliJ Idea(由於pom更改),我都必須在Idea中手動編輯項目結構並重新定義添加源目錄。

有沒有什麼辦法可以在maven中定義這個aditional源碼目錄,所以Idea在重載時會選擇它,或者告訴Idea不要忘記手動源碼directoy的定義?

+2

您是否檢查http://wiki.jetbrains.net/intellij/Maven_FAQ? – CrazyCoder

+0

@CrazyCoder應該先檢查他們的wiki。 「生成源」做到了這一點。謝謝。你能把它作爲答案發布,所以我可以接受它嗎? – bert

回答

11

此情況下,在IntelliJ IDEA Maven FAQ描述,生成的源部分:

當您重新導入項目指定源根目錄。
您可以選擇下列選項之一:

  • 自動檢測這是一個默認選項。當您選擇此選項時,IntelliJ IDEA會自動檢測生成的源的位置。 IntelliJ IDEA還會檢測將哪個目錄標記爲源根目錄。但是,IntelliJ IDEA僅在目標/ generated-sources和target/generated-sources/*目錄中搜索生成的源。

  • target/generated-sources此選項使您可以手動將目錄標記爲源根目錄。

  • 「target/generated-sources」的子目錄使用此選項可以手動將子目錄標記爲源根目錄。

  • 不檢測此選項讓您跳過檢測過程。

5

看看在<add-source>構建目標(見一個例子here

報價:

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>build-helper-maven-plugin</artifactId> 
<version>1.4</version> 
<executions> 
    <execution> 
    <id>add-wsdl-source</id> 
    <phase>generate-sources</phase> 
    <goals> 
    <goal>add-source</goal> 
    </goals> 
    <configuration> 
    <sources> 
    <source>${basedir}/src-generated/src</source> 
    </sources> 
    </configuration> 
    <!-- [...] --> 
    </execution> 
</executions> 
</plugin> 
+3

這確實會生成目標文件夾以外的來源,並且我可以構建該項目。不幸的是,Idea仍然需要手動定義這個額外的文件夾,因此我的問題依然存在。 – bert

0

您可以定義的(外部)源目錄作爲一個依賴於你的模塊。 Project Structure -> Modules -> Depenencies。您必須添加新的依賴項。

+0

謝謝。 Idea在pom重新加載後確實會保留此更改。 Java文件被識別爲這樣。不幸的是,Idea不能解析對這種目錄中的文件的類引用。奇怪,我會調查進一步 – bert