packagingExcludes 在 Maven war 插件中不起作用

packagingExcludes not working in maven war plugin

我在 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 clean install 时。 我得到了 target/webapp/WEB-INF/lib 中的所有罐子 实际上我不应该让罐子匹配排除的模式,比如 avalon-.jar,geronimo-.jar,aopalliance-.jar,common-.jar 等..

为什么这些被排除在外的罐子 WEB_INF/lib 进来了??

packagingExcludes 适用于 war 存档。对"exploded"war.

无影响

参考: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 文件。

但是如果应用程序是 spring 启动,在重新打包阶段,它将所有 jar 放回新包并将旧包重命名为 .war.original