2016-05-16 45 views
1

我有5個套餐如何構建Maven項目包明智?

com/test1 
com/test2 
com/test3 
com/test4 
com/test4 

我希望每次只建一個或拖包的任何戰爭。我怎樣才能做到這一點?

+0

您已經嘗試了什麼? – SparkAndShine

+0

你說的是戰爭?你爲什麼想建立包裝明智?那是什麼目的? – khmarbaise

+0

在一個項目中,我有所有的代碼,我不會建立所有的代碼,它增加了戰爭的規模。甚至一些軟件包代碼沒有用。例如我有3個用戶,我想發送每個包構建給每個用戶。我不會爲每個用戶創建單獨的項目,有時第4用戶將需要所有3包構建 –

回答

1

嘗試此罐:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>${maven-jar-plugin.version}</version> 
    <executions> 
     <execution> 
      <id>default-jar</id> 
      <phase>package</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <excludes> 
        <exclude>your_package_folder_here/**</exclude> 
       </excludes> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

而本作的戰爭:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <packagingExcludes>WEB-INF/classes/your_package_folder_here/**</packagingExcludes> 
    </configuration> 
</plugin> 

別忘了要排除的包文件夾的完整路徑的末尾使用/**/**用於文件夾/*用於文件。你的jar文件將被放置在沒有包的目標中。規則適用於這兩種情況。


如果要排除多個包,然後我的第一個建議是,首先讀取插件API:

packagingExcludes java.lang.String中2.1-α-2 虛假真正的 逗號分開的令牌列表,以便在 包裝之前從WAR中排除。該選項可用於實施瘦身WAR使用 的情況。請注意,您可以使用Java正則表達式引擎 使用表達式%regex []包含和排除特定模式。提示:閱讀關於(?!模式)。

然後最後你能拿這個例子:

(...) 
<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <packagingExcludes>WEB-INF/classes/com/steelzack/b2b2bwebapp/excludefolder/**,WEB-INF/classes/com/steelzack/b2b2bwebapp/excludefolder2/**</packagingExcludes> 
    </configuration> 
</plugin> 
(...) 
+0

這是行不通的。 –

+0

發生了什麼事?小心使用排除節點。他們應該是你的文件夾,如:'com/package/something/**'。同樣在目標中,您將在類文件夾中看到該包,但不在jar中。如果你檢查內容,那麼你的包不應該在那裏。示例:' com/mypackage/something/**' –

+0

我已經在示例項目中再次嘗試過,它確實有效!我已經使用過很多次了,它一直爲我工作。 –