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

Spring Boot部署Weblogic:Maven生成的WAR缺失Web.xml与Weblogic.xml

解决Spring Boot WAR包未包含weblogic.xml与web.xml的问题

你遇到的核心问题是自定义的weblogic.xml和web.xml没有被Maven打包进WAR文件,这通常不是Maven配置的问题,而是文件存放位置不对,或者你没明确告诉Maven要包含这些文件。结合你的pom.xml,我来帮你一步步排查和解决:

一、先确认文件的存放位置

Maven的war插件默认只会打包src/main/webapp/WEB-INF目录下的配置文件,所以你需要确保:

  • web.xml和weblogic.xml必须放在项目的src/main/webapp/WEB-INF文件夹中

    如果你之前把这些文件放在了其他目录(比如src/main/resources),Maven不会自动把它们移到WAR的WEB-INF目录下

二、检查Maven War插件的配置

你的pom里已经配置了maven-war-plugin,并且设置了<failOnMissingWebXml>false</failOnMissingWebXml>——这只是告诉Maven即使没有web.xml也不要报错,但不会自动帮你生成或包含自定义的配置文件。如果你的文件位置正确但还是没被打包,可以尝试明确指定需要包含的文件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <packagingExcludes>
            WEB-INF/lib/logback*.jar, WEB-INF/lib/*tomcat*.jar
        </packagingExcludes>
        <!-- 如果你需要从其他目录引入配置文件,可以用webResources指定 -->
        <webResources>
            <resource>
                <directory>src/main/resources/weblogic</directory> <!-- 你的自定义文件所在目录 -->
                <targetPath>WEB-INF</targetPath> <!-- 打包到WAR的WEB-INF下 -->
                <includes>
                    <include>weblogic.xml</include>
                    <include>web.xml</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>

三、关于Spring Boot与Weblogic部署的额外提示

  1. 你的所有Spring Boot starter依赖都设置了<scope>provided</scope>,这没问题(因为你用了Weblogic共享库),但要确保Weblogic的共享库包含了这些依赖的完整版本,避免运行时出现类缺失问题
  2. 对于Spring Boot 2.x部署到Weblogic,除了weblogic.xml,你需要创建一个继承SpringBootServletInitializer的启动类,让Spring Boot适配外部Servlet容器:
    @SpringBootApplication
    public class WebappApplication extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(WebappApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(WebappApplication.class, args);
        }
    }
    
  3. 你已经通过packagingExcludes排除了Tomcat相关jar包,这部分配置是正确的,避免和Weblogic的内置容器冲突

四、验证打包结果

执行mvn clean package后,解压生成的WAR文件,检查WEB-INF目录下是否存在weblogic.xml和web.xml。如果还是没有,可以执行mvn war:exploded查看解压后的目录结构,确认文件是否被正确复制到target/webapp-cds-xxx/WEB-INF下


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:51:41