我在pom.xml 中有以下内容
...
<groupId>my.org.name</groupId>
<artifactId>webservices-webapp</artifactId>
<packaging>war</packaging>
<name>Webapp</name>
<dependencies>
...
</dependecies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<attachClasses>true</attachClasses>
<packagingExcludes>
WEB-INF/lib/avalon-*.jar,
WEB-INF/lib/geronimo-*.jar,
WEB-INF/lib/aopalliance-*.jar,
WEB-INF/lib/common-*.jar,
WEB-INF/lib/core-cryptor-*.jar,
WEB-INF/lib/logging-*.jar,
WEB-INF/lib/rm-security-*.jar,
WEB-INF/lib/security-context-shared-*.jar,
WEB-INF/lib/session-management-*.jar,
WEB-INF/lib/jax*.jar,
WEB-INF/lib/joda-time-*.jar,
WEB-INF/lib/opensaml-*.jar,WEB-INF/lib/spring-security-core-*.jar,
WEB-INF/lib/xmlsec-*.jar,WEB-INF/lib/xmltooling-*.jar,
WEB-INF/lib/stax-api-*.jar,
WEB-INF/lib/servlet-api-*.jar,WEB-INF/lib/axis-saaj-*.jar,WEB-INF/lib/axis-jaxrpc-*.jar,
%regex[WEB-INF/lib/spring-(?!web).*.jar]
</packagingExcludes>
<archive>
<manifestEntries>
<DisableIBMJAXWSEngine>true</DisableIBMJAXWSEngine>
</manifestEntries>
</archive>
<webResources>
<resource>
<directory>src/main/java</directory>
<targetPath>WEB-INF/classes</targetPath>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>
现在,当我进行mvn清理安装时。我在target/webapp/WEB-INF/lib中获取所有jar事实上,我不应该让罐子匹配被排除的模式,比如avalon-.jar、geronimo-.jar、aopaliance-.jar、common-.jar等。
为什么这些被排除在外的jar出现在WEB_INF/lib中??
packagingExcludes
适用于战争档案。它对"爆炸式"战争没有影响。
参考:https://github.com/apache/maven-plugins/blob/maven-war-plugin-2.6/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java#L109
(handleArtifacts(context)被调用,而与packagingExcludes
无关
packagingExcludes
排除jar文件。
但若应用程序是春季启动的,在重新打包阶段,它会将所有jar放回新包中,并将旧包重命名为.war.original
。