2016-05-16 176 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

我已经在示例项目中再次尝试过,它确实有效!我已经使用过很多次了,它一直为我工作。 –