Maven 打包时丢失properties文件

 今天在打包项目war文件的时候,突然发现居然每个action包里面的properties文件都没打进来,在网上看了半天终于找到解决方法。

问题:maven执行package命令打包时,src/main/java路径下的properties文件偶尔丢失

解决方式:pom.xml中加入resources配置

<build>
  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.properties</include>
      </includes>
    </resource>
    <resource>
      <directory>src/main/resources</directory>
    </resource>
  </resources>
</build>

说明:

首先了解maven生命周期如下:

生命周期阶段目标
process-resourcesresources:resources
compilecompiler:compile
process-test-resourcesresources:testResources
test-compilecompiler:testCompile
testsurefire:test
packagewar:war
installinstall:install
deploydeploy:deploy

经测试,

1.当pom中不增加resources配置时,

  • 执行process-resources,classes文件夹下只包含src/main/resources下的文件
  • 执行compile,classes文件夹下包含src/main/resources下的文件与src/main/java下的*.class文件,丢失src/main/java下的*.properties文件

2.当pom中增加resources配置时

  • 执行process-resources,classes文件夹下只包含src/main/resources下的文件与src/main/java下的*.properties文件
  • 执行compile,classes文件夹下包含src/main/resources下的文件与src/main/java下的*.class文件与*.properties文件

 

 

 

 

 

 

<think>嗯,用户想了解如何使用Maven打包Spring Boot项目。我需要先回顾一下相关的知识。记得Spring Boot默认使用内嵌的Tomcat,所以打包成可执行的JAR文件比较方便。Maven的话,需要用到spring-boot-maven-plugin插件。 首先,用户可能已经有一个Spring Boot项目,所以需要检查pom.xml里的配置是否正确。确保打包方式是jar,并且插件配置正确。有候用户可能遇到依赖没有打进包里的问题,这候可能需要检查是否漏掉了includeSystemScope的配置,或者有没有正确声明依赖的范围。 然后,用户可能想知道具体的打包步骤。通常就是用mvn clean package命令,生成的文件target目录下。不过有候可能需要排除测试,或者指定不同的配置文件,这候需要附加参数比如-DskipTests。 另外,用户可能还会遇到依赖问题,比如本地依赖没有被包含进去。这候需要参考引用[2]中的配置,添加includeSystemScope为true,确保系统作用域的依赖也被打包进去。还有可能需要处理资源文件的位置,比如application.properties是否在正确的位置,或者是否需要使用不同的配置文件。 还有,用户可能想知道如何运行打包后的JAR,直接java -jar就可以,但有候需要指定激活的profile,这候可以用--spring.profiles.active参数。可能还需要说明如何将JAR包部署到服务器,比如复制到指定目录,设置启动脚本等等。 需要分步骤说明,确保结构清晰。可能还需要提到常见的错误,比如主清单属性缺失,这候要检查插件是否正确配置。或者依赖冲突,需要排除某些传递依赖。 最后,生成相关问题的候,要考虑用户可能的后续疑问,比如多模块项目如何打包,如何打包成WAR而不是JAR,或者如何优化JAR的大小,使用thin JAR等。这些都是用户可能进一步想了解的内容。</think>### 使用Maven打包Spring Boot项目的步骤 以下是使用Maven打包Spring Boot项目的详细教程: #### 1. **确认项目配置** - 在`pom.xml`中确保已声明`<packaging>jar</packaging>`(默认即为`jar`)。 - 添加`spring-boot-maven-plugin`插件配置(关键步骤,否则生成的JAR无法直接运行)[^1]: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 包含系统作用域的依赖(如本地JAR) --> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> </plugins> </build> ``` #### 2. **处理依赖问题** - **本地依赖**:若项目中引用了本地JAR文件(未通过Maven仓库管理),需在`<dependencies>`中添加`<systemPath>`并设置作用域为`system`,例如: ```xml <dependency> <groupId>com.example</groupId> <artifactId>local-lib</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/libs/local-lib.jar</systemPath> </dependency> ``` 同确保`<includeSystemScope>true</includeSystemScope>`已配置[^2]。 #### 3. **执行打包命令** - 在项目根目录下运行: ```bash mvn clean package ``` - **跳过测试**:添加`-DskipTests`参数: ```bash mvn clean package -DskipTests ``` - 生成的JAR文件位于`target`目录,文件名通常为`项目名-版本号.jar`。 #### 4. **验证与运行** - 执行JAR文件: ```bash java -jar target/项目名-版本号.jar ``` - **指定配置文件**:通过`--spring.profiles.active`激活环境: ```bash java -jar target/项目名-版本号.jar --spring.profiles.active=prod ``` #### 常见问题解决 - **主清单属性缺失**:检查`spring-boot-maven-plugin`是否配置正确[^1]。 - **依赖未打入JAR**:确认`<includeSystemScope>`和依赖作用域(如`system`)是否处理正确。 - **资源文件丢失**:检查`src/main/resources`目录是否包含配置文件(如`application.yml`)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值