Maven打包springboot项目
2025/2/10...大约 2 分钟
Maven打包springboot项目
打包
Spring Boot应用中,打包更加简单,因为Spring Boot自带一个更简单的spring-boot-maven-plugin
插件用来打包,我们只需要在pom.xml
中加入以下配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
无需任何配置,Spring Boot的这款插件会自动定位应用程序的入口Class,我们执行以下Maven命令即可打包:
mvn clean package
或者在 IDEA 的 Maven 插件中,双击 package 按钮。
我这里搭建了一个 sweetenglish
的项目,打包后我们在 target 目录看到
PS D:\myproject\sweetenglish\target> ls
目录: D:\myproject\sweetenglish\target
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2025/2/10 16:24 classes
d----- 2025/2/10 16:24 generated-sources
d----- 2025/2/10 16:24 generated-test-sources
d----- 2025/2/10 16:24 maven-archiver
d----- 2025/2/10 16:24 maven-status
d----- 2025/2/10 16:24 surefire-reports
d----- 2025/2/10 16:24 test-classes
-a---- 2025/2/10 16:24 59747695 sweetenglish-0.0.1-SNAPSHOT.jar
-a---- 2025/2/10 16:24 223482 sweetenglish-0.0.1-SNAPSHOT.jar.original
其中,sweetenglish-0.0.1-SNAPSHOT.jar.original
是Maven标准打包插件打的jar包,它只包含我们自己的Class,不包含依赖,而sweetenglish-0.0.1-SNAPSHOT.jar
是Spring Boot打包插件创建的包含依赖的jar,可以直接运行:
java -jar sweetenglish-0.0.1-SNAPSHOT.jar
这样,部署一个Spring Boot应用就非常简单,无需预装任何服务器,只需要上传jar包即可。
在打包的时候,因为打包后的Spring Boot应用不会被修改,因此,默认情况下,spring-boot-devtools
这个依赖不会被打包进去。但是要注意,使用早期的Spring Boot版本时,需要配置一下才能排除 spring-boot-devtools
这个依赖:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludeDevtools>true</excludeDevtools>
</configuration>
</plugin>
如果不喜欢默认的项目名+版本号作为文件名,可以加一个配置指定文件名:
<project ...>
...
<build>
<finalName>m-app</finalName>
...
</build>
</project>
这样打包后的文件名就是 my-app
配置文件
SpringBoot读取配置文件(application.yml)的优先级
- jar包同级目录的config目录
- jar包同级目录
- classPath(即resources目录)的config目录
- classPath目录
还有一种最高优先级的方式是项目启动时通过命令的方式指定配置文件:
java –jar -Dspring.config.location=xxx/xxx/xxxx.properties xxxx.jar
所以我们只需要把配置文件拷贝出来放到与 jar 包同级的 config 目录中即可。
后台启动项目
nohup java -jsr sweetenglish-0.0.1-SNAPSHOT.jar > dev/null 2>&1 &
nohup java -jar sweetenglish-0.0.1-SNAPSHOT.jar > log.file 2>&1 &