2008-11-06 54 views

回答

226

您可以構建輔助添加一個新的源目錄:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>src/main/generated</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+1

這種方法的唯一問題是最終的工件也包含java源文件(.java文件)。有沒有辦法排除源文件,只包含.class文件? – 2012-09-05 09:23:15

29

這爲我工作

<build> 
    <sourceDirectory>.</sourceDirectory> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
     <includes> 
      <include>src/main/java/**/*.java</include> 
      <include>src/main2/java/**/*.java</include> 
     </includes> 
     </configuration> 
     </plugin> 
    </plugins> 
</build> 
+16

不是一個好主意恕我直言,因爲幾個插件承擔`sourceDirectory` - 可能還有其他`sources` - 作爲源文件的根。在你的解決方案中,`maven-compiler-plugin`是唯一知道這些實際根的插件。 – 2011-05-04 14:17:04

+3

@Laurent你說得對。這在幾年前是個好主意,但現在有更好的選擇。上面列出的構建幫手是我的首選選項。 – sal 2011-05-06 01:51:28

+3

這不會將它添加到項目模型中,所以它在IDE中無法正常工作。 – 2011-11-10 20:29:35

2

用於從後集結幫手 - Maven的插件 - 和更新SRC /主/生成。而且mvn clean compile在我的../common/src/main/java或者../common上工作,所以保留後者。然後是的,證實了David Phillips提到的IntelliJ IDEA(版本10.5.2)級別的編譯失敗。 問題在於IDEA未向項目中添加其他源根。手動添加它解決了問題。這不是很好,因爲編輯項目中的任何內容都應該來自maven,而不是直接編輯IDEA的項目選項。然而,我可以直接支持build-helper-maven-plugin,直接自動添加源代碼。

然後需要另一種解決方法來使此工作。由於每次IDE重新導入maven設置後,pom將我新添加的源文件保存在模塊中,但它丟失了它的源文件夾選擇,並且沒用。因此,對於IDEA - 需要一次設置這些:

  • 選擇 - 項目設置/ Maven的/導入/保持源和測試上重新導入 文件夾。
  • 添加 - 項目結構/項目設置/模塊/ {模塊}/Sources /添加內容根目錄。

現在保持這些文件夾導入並不是世界上最好的做法,但是,試試看吧。

11

,使其在的IntelliJ工作,你還可以添加

<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory> 

到Maven的編譯器插件

1

這可以通過兩個步驟來完成:

  • 對於每個源目錄你應該創建自己的模塊。
  • 在所有模塊應指定相同的編譯目錄:${build.directory}

如果您有啓動碼頭(jetty:run),那麼任何模塊中的任何類的重新編譯(與Maven,IDEA或者Eclipse)的工作將導致碼頭的重啓。您將獲得修改資源的相同行爲。

11

這也適用於maven通過定義資源標籤。無論你喜歡什麼,你都可以命名你的src文件夾名稱。

<resources> 
     <resource> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/*.java</include> 
       <include>**/*.properties</include> 
       <include>**/*.xml</include> 
      </includes> 
     </resource> 

     <resource> 
      <directory>src/main/resources</directory> 
      <includes> 
       <include>**/*.java</include> 
       <include>**/*.properties</include> 
       <include>**/*.xml</include> 
      </includes> 
     </resource> 

     <resource> 
      <directory>src/main/generated</directory> 
      <includes> 
       <include>**/*.java</include> 
       <include>**/*.properties</include> 
       <include>**/*.xml</include> 
      </includes> 
     </resource> 
    </resources> 
相關問題