2012-12-04 120 views
0

我想將現有項目轉換爲Maven項目。它有3個模塊,其中一個模塊有多個源文件夾。 http://i.imgur.com/jZCnR.pngMaven編譯器插件,構建助手插件不會生成類文件

maven clean and install或eclipse clean不會在類和test-classes文件夾中創建類文件。項目結構是由那裏沒有任何類文件創建的。

以下插件配置在父pom中定義。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
      <id>add-source</id> 
      <phase>generate-sources</phase> 
      <goals><goal>add-source</goal></goals> 
      <configuration> 
       <sources> 
        <source>src/main/java/**/*.*</source> 
        <source>src/report/java/**/*.*</source> 
        <source>src/architect/java/**/*.*</source> 
       </sources> 
      </configuration> 
     </execution> 
     <execution> 
      <id>add-test-source</id> 
      <phase>generate-test-sources</phase> 
      <goals><goal>add-test-source</goal></goals> 
      <configuration> 
       <sources> 
        <source>src/test/java/**/*.*</source> 
       </sources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <debug>false</debug> 
    </configuration> 
    <executions> 
     <execution> 
      <id>default-compile</id> 
      <phase>compile</phase> 
      <goals><goal>compile</goal></goals> 
      <configuration> 
       <includes> 
        <include>src/main/java/**/*.*</include> 
        <include>src/report/java/**/*.*</include> 
        <include>src/architect/java/**/*.*</include> 
       </includes> 
      </configuration> 
     </execution> 
     <execution> 
      <id>default-testCompile</id> 
      <phase>test-compile</phase> 
      <goals><goal>testCompile</goal></goals> 
      <configuration> 
       <testIncludes> 
        <include>src/test/java/**/*.*</include> 
       </testIncludes> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

我在做什麼錯?

+1

爲什麼添加與src/main/java或src/test/java不同的位置?這真的有必要嗎? – khmarbaise

+0

因爲在這個遺留項目中有多個源文件夾,並且它們之間存在雙向依賴關係。如果我做了一個特定的來源,比如說。在這種情況下,「報告」src文件夾,作爲一個單獨的maven模塊,那麼我不知道如何解決這種雙向依賴。 – blaks

+0

根據您提供的信息,您需要將多個源文件夾分隔爲不同的模塊。 – khmarbaise

回答

0

正如build helper maven pluginadd-source目標documented,你應該在<source>標籤指定目錄

+0

謝謝,我解決了這個問題。所以現在我所有的資源都正確地被複制到類和測試類文件夾中。但我仍然沒有任何類文件。 – blaks

3

對我來說,Eclipse中的mvn插件也不會生成正確的結構。 嘗試在cmd中運行mvn eclipse:eclipse。那爲我做了。

此外,您還使用了'generate-test-sources'階段。這似乎不工作嘗試'生成源'。

+0

如果有人知道爲什麼generate-test-sources不起作用。在評論中添加它。 – mahieus

+0

簡而言之,您需要在'maven-eclipse-plugin'執行之前執行'generate-test-sources'目標,以便運行'mvn generate-test-sources eclipse:eclipse'。 我有一個在這裏回答更詳細的回答:http://stackoverflow.com/a/20463195/1410035 –

1

根據Using MOJO build-helper-maven-plugin to add more source folders to MAVEN你應該定義額外的源目錄再次通過包括標籤;只需在build-helper-maven-plugin中定義它們即可。

你也可以嘗試目標與早期的Maven相相關附加源,如初始化。一般來說,越早越好。

<phase>initialize</phase> 
<goals> 
    <goal>add-source</goal> 
</goals> 

就我而言,我的錯誤是將其綁定到編譯階段。儘管我集結幫手 - Maven的插件定義之前Maven的編譯插件的pom.xml,不知何故默認編譯任務第一腳踢和悄悄地忽略我造成了一些意外的錯誤額外的源目錄進一步下降建設。綁定到同一階段的步驟順序應遵循pom.xml中的順序,但並非總是如此。

檢查您在日誌中看到:

[INFO] --- build-helper-maven-plugin:1.8:add-source (add-gen-source) @ deepclone-sample-project-1 --- 
[INFO] Source directory: E:\dev\workspace...\src\main\generated added. 

方便的技巧:請在您的代碼是故意的錯誤,只是檢查的編譯器真的去通過你額外的目錄。如果編譯沒有立即失敗,那麼問題不在於不生成類文件文件,而是關於編譯器配置。您可以排除增量構建問題或類似的更深奧的問題。

+0

你是一個救星,謝謝你! –