maven插件_Apache Maven WAR Plugin

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhuchunyan_aijia/article/details/50536583

Apache Maven WAR Plugin 

http://maven.apache.org/plugins/maven-war-plugin/
此插件使用,在 package phase时候,参数XXX目录和 XXX.war文件

想排除一些文件,或者加入一些文件时候,会在war插件中配置使用。例如不同环境使用的文件不一样,将一些文件不在resources目录中拷贝到war中时使用

使用中遇到的问题

官网中如下,不好使哦。所以我改成 

<configuration>
          <webResources>
            <resource>
              <!-- this is relative to the pom.xml directory -->
              <directory>resource2</directory>
              <!-- the list has a default value of ** -->
              <includes>
                <include>**/*.jpg</include>
              </includes>
            </resource>
          </webResources>
        </configuration>

改成:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceExcludes>login.jsp</warSourceExcludes>
</configuration>
</plugin>

1. Including and Excluding Files From the WAR
 <packagingIncludes> and <packagingExcludes>
打包时exclude src/main/resource/prod文件夹 和 src/main/resource/dev文件夹 排除掉。多个文件夹有逗号隔开。也可以是文件名称
packagingExcludes 默认目录是 src\main\webapp里面
<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <packagingExcludes>
		**/prod/**,**/dev/**
	 </packagingExcludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
或者:
<packagingExcludes>
WEB-INF/classes/prod/**,WEB-INF/classes/dev/**,index.jsp
</packagingExcludes>


2. 插件的warSourceExcludes和packagingExcludes参数的区别
推荐使用warSourceExcludes代替 packagingExcludes
相同点:相对的目录都是 src\main\webapp
<packagingExcludes>
WEB-INF/classes/prod/**,WEB-INF/classes/dev/**,index.jsp
</packagingExcludes>

<warSourceExcludes>
WEB-INF/classes/prod/**,WEB-INF/classes/dev/**,index.jsp
</warSourceExcludes>

不同点:
<packagingExcludes>**/application*.properties,**/spy.properties</packagingExcludes> <warSourceExcludes>test/*,venue/**</warSourceExcludes>

运行mvn package命令后结果是:
target/mywebapp-1.0.4 (文件夹)下面原码中存在的test和venue目录没有复制过来(warSourceExcludes忽略成功),其他的文件和目录没有变化
对于packagingExcludes的配置意思是从mywebapp-1.0.4文件夹中复制文件时忽略的文件列表,所以最后打包的war里面不包含test、venue文件夹和packagingExcludes中指定的文件

总结一句:
warSourceExcludes是在编译周期进行完成后从src/main/webapp目录复制文件时忽略,而packagingExcludes是在复制webapp目录完成后打包时忽略target/mywebapp-1.0.4 文件夹的文件
区别来源:
http://www.fwqtg.net/maven-war-plugin%E6%8F%92%E4%BB%B6%E7%9A%84warsourceexcludes%E5%92%8Cpackagingexcludes%E5%8F%82%E6%95%B0%E7%9A%84%E5%8C%BA%E5%88%AB.html

3. 拷贝文件
<configuration>
          <webResources>
            <resource>
              ...
            </resource>
            <resource>
              <directory>configurations</directory>
              <!-- override the destination directory for this resource -->
              <targetPath>WEB-INF</targetPath>
              <!-- enable filtering -->
              <filtering>true</filtering>
              <excludes>
                <exclude>**/properties</exclude>
              </excludes>
            </resource>
          </webResources>
        </configuration>


展开阅读全文

没有更多推荐了,返回首页