2011-11-21 37 views
3

在我們的項目假設我們有以下的包可以選擇指定java包的maven程序集插件嗎?

org.xxx.dao,org.xxx.service,org.xxx.service.impl

所有的包都在療法源文件夾SRC/main/java

我可以將程序集軟件包分成獨立的jar,(xxx-dao.jar,xxx-service.jar,xxx-service-impl.jar)嗎?

+0

爲什麼不創建多個模塊而不是將它們寫入單個模塊?或者如果你不想這樣做,你爲什麼要單獨的罐子? – melihcelik

+0

這是因爲舊項目不是由我創建的。我只想導出部分源代碼,然後將jar放入另一個系統中運行。 – jilen

+0

我已經添加了一個答案,你能驗證它的工作原理嗎?如果它不起作用,請讓我知道,以便我可以刪除答案。 – melihcelik

回答

5

您可以使用標準的maven-jar-plugin此:

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>dao</id> 
      <phase>package</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <archive> 
        <index>true</index> 
        <manifest> 
         <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
        </manifest> 
       </archive> 

       <classifier>dao</classifier> 
       <includes> 
        <include>org/xxx/dao/**/*</include> 
       </includes> 
      </configuration> 
     </execution> 

     <execution> 
      <id>service</id> 
      <phase>package</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <archive> 
        <index>true</index> 
        <manifest> 
         <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
        </manifest> 
       </archive> 

       <classifier>service</classifier> 
       <includes> 
        <include>org/xxx/service/**/*</include> 
       </includes> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

這給你一個JAR的一切,然後幾個JAR只與選擇的內容,你可以在你的Maven的POM分類選擇。

如果你想省略默認的JAR(包含一切),那麼你更換一個<id><id>default-jar</id>,並添加一個<excludes>元素,因爲默認的JAR包括一切,所以你必須擺脫的東西,你不想。

+0

它的工作原理,非常感謝 – jilen

1

maven-assembly插件不適用於此類任務,請參見its features。如果你有源代碼,那麼我建議將它們複製到你的項目模塊中。

但是,如果你想用maven-assembly插件來做,那麼我認爲你可以通過創建單獨的descriptor components並定義哪些文件包含在哪個程序集中來實現。您可以定義源文件,將其包含在sources定義下的includes標記中。

相關問題