SpringBoot打包排除指定的包

本文介绍如何使用 spring-boot-maven-plugin 排除指定的包不参与 Spring Boot 应用程序的打包过程。通过配置 `<excludeGroupIds>` 标签可以实现这一目的。

使用spring-boot-maven-plugin排除指定的包

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<configuration>
		<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
		<excludeGroupIds>
			org.apache.solr
		</excludeGroupIds>
	</configuration>
</plugin>

这样在打包的时候org.apache.solr就不会参与打包了。

<think>好的,我现在需要解决用户的问题:将Spring Boot应用打包为WAR文件部署到Tomcat时出现404错误。用户已经提供了一些引用资料,我需要结合这些信息来分析可能的原因并提供解决方案。 首先,用户的问题可能涉及多个方面。根据引用[1][^1],常规步骤排除Tomcat依赖、添加Servlet依赖、设置打包方式为WAR,以及启动继承SpringBootServletInitializer并覆盖configure方法。用户可能已经按照这些步骤操作,但仍然遇到404错误,说明某些配置可能存在问题。 接下来,我需要检查可能的错误点。引用[4][^4]提到,必须排除内嵌Tomcat并添加Servlet API依赖。如果依赖配置不正确,比如没有正确排除Tomcat或未正确设置作用域,可能导致冲突。例如,在pom.xml中,应该将内嵌Tomcat的依赖设置为provided,如引用[2][^2]所示,这样打包时不会含内嵌Tomcat,避免冲突。 另外,启动是否正确继承SpringBootServletInitializer并覆盖configure方法?如果启动没有正确配置,应用可能无法正确初始化,导致Tomcat无法识别,从而返回404。例如,启动需要像这样: ```java public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } } ``` 如果没有正确覆盖configure方法,部署时可能会出问题。 另外,项目结构是否正确?Spring Boot的静态资源和模板通常放在src/main/resources/static或src/main/resources/templates目录下。如果应用被打包为WAR后,这些资源没有正确含,或者路径配置错误,也会导致404。需要检查生成的WAR文件结构,确认资源文件是否被正确打包。 还有上下文路径的问题。外部Tomcat部署时,默认会使用WAR文件名作为上下文路径。例如,如果应用打包为myapp.war,访问路径应为http://localhost:8080/myapp/。如果应用预期使用根路径,可能需要配置Tomcat的ROOT上下文,或者调整应用的server.servlet.context-path属性。 此外,日志信息是关键。查看Tomcat的catalina.out或本地日志文件,看是否有应用启动时的错误信息。例如,启动时是否有异常导致应用未能正确部署,或者是否识别到了Spring Boot的入口。 还有可能,项目中的web.xml或webapp目录缺失。虽然Spring Boot通常不需要web.xml,但某些情况下可能需要配置。或者,如果使用JSP,需要确保有正确的目录结构,比如src/main/webapp/WEB-INF。 总结下来,可能的解决方案步骤括: 1. 检查依赖配置是否正确排除内嵌Tomcat并添加Servlet API。 2. 确认启动正确继承和覆盖configure方法。 3. 检查项目结构,确保资源文件正确打包。 4. 确认访问路径是否正确含上下文。 5. 查看Tomcat日志,定位启动错误。 6. 检查web.xml或目录结构是否符合要求。 现在需要将这些步骤整理成清晰的解决方案,确保用户能逐步排查问题。同时,注意使用中文,结构清晰,并引用提供的资料。</think>### Spring Boot WAR部署Tomcat出现404的解决方案 #### 1. 检查依赖配置 在$pom.xml$中必须**排除内嵌Tomcat依赖**,并将Servlet API依赖的作用域设置为$provided$,确保打包时不含冲突的库: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加Servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> ``` 若使用引用[2][^2]的配置,可简化为: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` #### 2. 确认启动配置 启动需继承$SpringBootServletInitializer$并重写$configure$方法: ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); // 指定主启动 } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 若未覆盖此方法,Tomcat无法识别Spring Boot入口[^4]。 #### 3. 检查打包后的文件结构 通过解压WAR验证资源路径: ``` myapp.war ├── WEB-INF │ ├── classes (编译后的代码和配置文件) │ ├── lib (第三方依赖) │ └── web.xml (可选) ├── META-INF └── 静态资源目录(如static/) ``` 若$static/$或$templates/$目录缺失,需检查$src/main/resources$是否含这些目录。 #### 4. 调整上下文路径 - **默认路径**:Tomcat会以WAR文件名作为上下文路径,例如$myapp.war$对应访问路径为$http://localhost:8080/myapp/$。 - **修改路径**:在$application.properties$中添加: ```properties server.servlet.context-path=/myapp ``` 或通过重命名WAR文件为$ROOT.war$直接使用根路径。 #### 5. 查看Tomcat日志定位错误 检查$tomcat/logs/catalina.out$中的启动日志: - 若出现$No SpringApplication sources have been defined$,说明启动未正确配置[^4]。 - 若提示$Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]$,可能是依赖冲突导致。 #### 6. 补充Web配置(可选) - **添加web.xml**:在$src/main/webapp/WEB-INF$目录下创建$web.xml$(仅需基础配置): ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="3.1"> <display-name>myapp</display-name> </web-app> ``` - **JSP支持**:若使用JSP,需添加以下依赖并确保文件位于$src/main/webapp/WEB-INF/views/$: ```xml <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值