Maven中`warSourceExcludes`和`packagingExcludes`有什么区别?

时间:2014-02-08 01:15:45

标签: maven maven-war-plugin

Maven WAR插件有两个配置选项:warSourceExcludespackagingExcludespackagingExcludes上有一些文档,说:

  

使用<packagingIncludes><packagingExcludes>配置参数,可以在WAR文件中包含或排除某些文件。

但是,我发现很难找到有关warSourceExcludes的信息。

这两个配置选项有什么区别?

我正在使用Maven 3.1.1而WAR插件是版本2.4

2 个答案:

答案 0 :(得分:11)

  

warSourceExcludes:要排除的标记的逗号分隔列表   复制warSourceDirectory的内容时。


  

packagingExcludes:要排除的标记的逗号分隔列表   来自包装前的WAR。

使用packagingExcludes,令牌完全被排除在最终的war文件之外。

使用warSourceExcludes时,将war目录复制到war文件时会忽略标记。

因此,例如,如果令牌存在于webappDirectory中,则在使用warSourceExcludes时不会忽略它们,但是在使用packagingExcludes时它们将被忽略。

答案 1 :(得分:0)

产生最终战争文件的主要步骤可以简化为:

  1. 将网络资源从${warSourceDirectory}复制到${<webappDirectory>},可以将其视为:

    cp -r src/main/webapp/* target/artifact/
    

    <warSourceExcludes>用于此步骤,因此排除的文件不会复制到目标目录中。

  2. 产生的战争文件的内容来自${webappDirectory},即target/<artifact>目录,例如:

    jar --create --file target/artifact.war -C target/artifact/ WEB-INF ...
    

    这里使用<packagingExcludes>来确定要从目标目录打包的内容。

请参阅https://maven.apache.org/plugins/maven-war-plugin/war-mojo.html