You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Maven 3.3.9构建EAR文件时如何启用skinnyWars选项?

解决Maven EAR中skinnyWars未生效的问题

我碰到过好几个类似的情况,明明配置了skinnyWars但WAR里还是带着重复的JAR,结合你用的Maven 3.3.9,咱们一步步排查:


1. 先确认maven-ear-plugin的核心配置是否到位

首先,你得确保插件里显式开启了skinnyWars,并且搭配了兼容的版本(老版本的ear插件对skinnyWars的支持可能有bug,建议用2.10.x以上的稳定版本,和Maven 3.3.9兼容)。示例配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ear-plugin</artifactId>
    <version>2.10.1</version>
    <configuration>
        <!-- 必须设为true才会启用skinnyWars功能 -->
        <skinnyWars>true</skinnyWars>
        <!-- 共享库默认存放在EAR的lib目录,可按需修改 -->
        <defaultLibBundleDir>lib</defaultLibBundleDir>
        
        <!-- 别忘了配置你的WAR模块 -->
        <modules>
            <webModule>
                <groupId>你的WAR模块groupId</groupId>
                <artifactId>你的WAR模块artifactId</artifactId>
                <contextRoot>/你的应用上下文</contextRoot>
            </webModule>
        </modules>
    </configuration>
</plugin>

如果之前没指定插件版本,Maven可能会用一个较老的默认版本,这很可能是问题根源。

2. 检查WAR模块的依赖Scope设置

skinnyWars生效的前提是:WAR里的依赖是compile或runtime scope(默认值)。如果你的WAR把mysql-connector-java设成了provided或者test,ear插件会跳过它,不会把它移到共享库。

另外,要确保EAR模块的pom里也声明了这些共享依赖(比如mysql-connector-java),并且版本和WAR模块一致。最好在EAR的<dependencyManagement>里统一管理所有依赖的版本,避免版本冲突导致插件跳过处理。

3. 排查是否有意外的依赖排除

有时候会不小心在ear插件里配置了excludedJars,或者WAR模块的pom里加了<exclusions>,导致目标JAR没被纳入共享库范围。检查一下这两处的配置,确保没有把mysql-connector-java排除在外。

4. 验证WAR模块的打包配置

如果WAR模块用了maven-war-plugin的<packagingIncludes>或者<packagingExcludes>,可能会干扰ear插件的skinnyWars逻辑。另外,WAR里如果有system scope的依赖,ear插件也不会处理这类依赖,要尽量避免使用system scope。

5. 用详细日志定位问题

如果上面的配置都没问题,执行mvn clean install -X开启debug日志,重点看ear插件处理依赖的那段日志。你会看到插件是如何判断哪些JAR要移到共享库,哪些要留在WAR里的——如果mysql-connector-java被标记为"skipped"或者"not eligible",就能找到具体原因。


最后,构建完成后手动验证结果:打开生成的EAR文件,检查lib目录下是否有mysql-connector-java的JAR,再打开WAR文件看WEB-INF/lib里是否还存在这个JAR。如果WAR里没有了,就说明skinnyWars生效了。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:09:29