springboot(maven)项目打包问题

简介: 问题说明: 今天在项目测试时遇到一个问题,启动项目时,修改外部配置文件后,会出现启动失败或者日志文件路径不对的情况。 我们的项目是springboot项目,采用jar包的方式运行,部分配置文件放在jar包外。

问题说明:

今天在项目测试时遇到一个问题,启动项目时,修改外部配置文件后,会出现启动失败或者日志文件路径不对的情况。
我们的项目是springboot项目,采用jar包的方式运行,部分配置文件放在jar包外。

上述问题的原因是:运行的jar包内和jar包外同时存在相同名字的配置文件。

根据目前项目中的maven配置,打包时在jar包内会包含一份配置文件,而当jar包内和jar包外同时存在相同名字的配置文件时,会产生一定的冲突。(网上说有优先级选择,只会选一个,但实际测试发现两个都会生效)

解决办法:

我们之前的做法是,先打jar包,然后使用压缩软件把jar里的配置文件删除,确保只有jar包外才有配置文件。
但是测试以及后续生产过程进行打包部署时,并不太愿意这样操作,因此需要对这个打包并删除jar内的配置文件的过程进行简化。
具体的做法是,在项目的pom.xml文件中增加resources的配置:


<build>
<plugins>
<plugin>
<!--这里原本的配置,省略-->
</plugin>
</plugins>
<!--以下为新增配置-->
<resources>
<resource>
<directory>src/main/resources
<excludes>
<exclude>*.properties
<exclude>logback.xml
<exclude>*.dat
</excludes>
</resource>
</resources>
</build>

有了这个配置之后,打包的时候就会排除properties结尾的、dat结尾的文件,以及logback.xml文件,可以解决上述的问题。
需要注意的是,这时候jar包中就不再包含这些配置文件,部署时就需要把jar包和svn上的相关配置文件一同给予测试和生产。

新的问题及解决办法:

上述操作解决部署过程问题,但会带来新的开发过程问题。
虽然打包可以成功排除资源文件,简化打包部署的操作步骤,但是在eclipse中运行时也会找不到资源文件,从而导致启动失败。
解决办法是,在我们开发过程中把上述resources的这一段配置注释,需要进行打包外部运行前,解除注释。

目录
相关文章
|
5天前
|
XML Java 应用服务中间件
SpringBoot-打包&部署
SpringBoot 项目支持两种打包方式:WAR 包和 JAR 包。JAR 包内置 Tomcat,可直接运行;WAR 包需部署在外部 Tomcat 上。JAR 包通过 `mvn clean package` 打包并用 `java -jar` 运行,支持后台运行和 JVM 参数配置。WAR 包需修改 pom.xml 为 war 类型,移除嵌入式 Tomcat 依赖,添加 servlet-api,并继承 `SpringBootServletInitializer`。配置文件可通过外部 application.yml 覆盖,默认优先级高于 JAR 内部配置。
43 17
SpringBoot-打包&部署
|
27天前
|
XML Java 应用服务中间件
SpringBoot项目打war包流程
本文介绍了将Spring Boot项目改造为WAR包并部署到外部Tomcat服务器的步骤。主要内容包括:1) 修改pom.xml中的打包方式为WAR;2) 排除Spring Boot内置的Tomcat依赖;3) 添加Servlet API依赖;4) 改造启动类以支持WAR部署;5) 打包和部署。通过这些步骤,可以轻松地将Spring Boot应用转换为适合外部Tomcat服务器的WAR包。
125 64
SpringBoot项目打war包流程
|
30天前
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
131 36
|
22天前
|
自然语言处理 IDE Java
SpringBoot start.aliyun.com创建项目,解决properties乱码的问题
通过确保文件和开发环境的编码一致,配置 Maven 编码,设置 Spring Boot 应用和嵌入式服务器的编码,可以有效解决 properties 文件的乱码问题。以上步骤可以帮助开发者确保在 Spring Boot 项目中正确处理和显示多语言字符,避免因编码问题导致的乱码现象。
35 5
|
1月前
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
47 10
|
1月前
|
Java 应用服务中间件
SpringBoot工程打包部署
SpringBoot工程打包部署简介:SpringBoot项目可通过三种方式运行:可执行Jar包、可执行War包和标准War包。其中,可执行Jar/War包可独立运行,标准War包需部署在Tomcat中。具体步骤包括:1. 修改pom.xml添加构建依赖;2. 执行`mvn clean package`命令打包;3. 运行生成的Jar/War包(如`java -jar xxx.jar`)。对于标准War包,还需修改启动类并配置Tomcat依赖。
|
3月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
111 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
3月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
305 8
|
3月前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
80 8
|
3月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
79 2

推荐镜像

更多