2011-07-12 54 views
5


我想我失去了一些東西..
我要讓我的項目的釋放。
我添加了maven-release-plugin到我的pom。另外,我還有另一個源代碼dir,除了java(稱爲gen-src)。當我在maven發佈的第一步(即準備)時,一切都很好,但是當我使執行時,它並不考慮gen-src。
Maven的釋放,插件和建設者輔助插件

<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/gen_src</source> 
        </sources> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 

我懷疑它可以被連接到一個事實,即在相位產生來源。我是否需要將添加源目標附加到另一個階段?如果是,如何?
我也閱讀here - 這是類似的問題,雖然我沒有使用flex..no的答案。 有什麼想法?
謝謝。

+3

做**不**將生成的源代碼到'SRC/main'離開它總是在'目標/生成-sources'。 –

+1

用'-X'運行並提供調試輸出。我可能能夠發現原因。我使用JAXB和buildhelper運行相同的設置,並且工作完美無瑕。 –

+0

說明「不考慮gen-src」。 –

回答

0

生成的源類不會進入二進制文件夾—那裏只能找到編譯常規源和生成源的.class文件。不過,Maven發佈插件會將額外的源代碼目錄包含到源代碼jar中。

沒有必要在任何其他階段執行「添加源」目標;你能找到有用的是讓清理插件知道它應該包括額外的目錄:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-clean-plugin</artifactId> 
<version>2.4.1</version> 
<configuration> 
    <filesets> 
     <fileset> 
      <directory>${basedir}/src/main/gen_src</directory> 
      <includes> 
       <include>**/*</include> 
      </includes> 
     </fileset> 
    </filesets> 
</configuration> 
</plugin> 
1

我在過去有同樣的問題,我想我知道發生了什麼。發行版:執行階段簽出將發佈到'target/checkout'文件夾的標籤的副本,並派生一個maven進程來構建此結賬。當你只能在釋放有一個問題:執行階段,它必須與Maven在中上的「目標/結賬」文件夾中運行叉子過程,而不是在「./」文件夾中的事實。

我最終解決這個問題移除建立幫助,但我不知道,如果你可以做同樣的,所以如果我是你,我會盡量避免在配置相對路徑。您可以配置構建輔助這樣的:

<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>${basedir}/src/main/gen_src</source> 
       </sources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

明確定義$ {BASEDIR}可避免這個問題,因爲$ {BASEDIR}將解析爲叉路徑(your_workspace /項目/目標/結賬),而不是當前路徑(your_workspace/project)。如果不能解決這個問題,我認爲,我們應該對文件建立輔助性Maven的插件中的錯誤,因爲應該只有在執行階段沒有錯誤。