2012-05-29 64 views
0

我有一個maven項目,編譯兩個不同的項目,然後在這個目錄中創建類:$ {project.build.directory}/classes如何在maven的一個構建塊內創建不同的jar文件?

其中$ {project.build.directory}指向pom的目​​錄。 xml存在。

我正在使用maven-jar-plugin和不同的「執行」塊來爲每個項目創建相關目錄/類的jar文件。我對maven很陌生,難以定義正確的「include」和「exclude」目錄。

這是我的類所在的結構:

\目標\類\ COM

\目標\類\ COM \微軟

\目標\類\ COM \谷歌

\ target \ classes \ org

第一個jar文件需要從這些類中創建:

\目標\類\ COM \微軟

\目標\類\組織

而第二個罐子需要這些類來創建:

\目標\類\ COM \谷歌

以下是有「執行」塊來創建這些罐子的「構建」塊的一部分。第一個jar名爲:msn-prod,另一個名爲:google。正如你所看到的,我嘗試了所有不同的組合來創建這些罐子,但都沒有工作 - 它們存在於下面的構建塊中,作爲評論的部分。

有人可以幫助我嗎?任何幫助是極大的讚賞。

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.3.2</version> 
      <executions> 
       <execution> 
        <id>msn-prod</id> 
        <goals><goal>jar</goal></goals> 
        <phase>generate-resources</phase> 
        <configuration> 
         <classifier>msn-prod</classifier>  
         <!-- <classesDirectory>${project.build.directory}/classes/com/microsoft</classesDirectory> 
         <includes> 
          <include>**/*.class</include> 
         </includes> 
         <classesDirectory>${project.build.directory}/classes/org</classesDirectory> 
         <includes> 
          <include>**/*.class</include> 
         </includes>--> 
         <classesDirectory>${project.build.directory}/classes</classesDirectory> 
         <!-- <includes> 
          <include>**/*.class</include> 
         </includes>-->       
         <!-- <excludes> 
          <exclude>**/com/google/*</exclude> 
         </excludes>-->       
         <!-- <excludes> 
          <exclude>**/google/*.class</exclude> 
         </excludes>-->        
         <includes> 
          <include>**/com/microsoft/*.class</include> 
          <include>**/org/*.class</include> 
         </includes>    
         <finalName>${msn.prod}-${msn.api.version}</finalName>    
        </configuration> 
      </execution> 

      <execution> 
        <id>google</id> 
        <goals><goal>jar</goal></goals> 
        <phase>generate-resources</phase> 
        <configuration> 
         <classifier>google</classifier> 

         <!-- <classesDirectory>${project.build.directory}/classes</classesDirectory> 
         <includes> 
          <include>**/com/google/*.class</include> 
         </includes>-->       
         <classesDirectory>${project.build.directory}/classes/com/google</classesDirectory> 
         <includes> 
          <include>**/*.class</include> 
         </includes>          
         <finalName>${google}-${google.api.version}</finalName>    
        </configuration> 
      </execution> 

     </executions> 
    </plugin> 

回答

2

您違反了每個模塊一個構建工件的Maven最佳實踐,因此會遇到麻煩。把它分解成多個項目,這很容易。

+0

好點,我有同樣的問題:) – trillions

相關問題