pom文件中添加了“org.springframework.boot:spring-boot-maven-plugin”插件。在添加了该插件之后,当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行。
spring-boot-maven-plugin插件是将spring boot的应用程序打包成fat jar的插件,借助spring-boot-maven-plugin将所有应用启动运行所需要的jar都包含进来,从逻辑上将具备了独立运行的条件。
一、添加spring-boot-maven-plugin插件
官网是这样描述的:为了创建一个可执行的jar包,我们需要添加spring-boot-maven-plugin到pom.xml文件中。在dependencies 节点下面添加如下配置。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
二、mvn package打包
保存 pom.xml 文件之后,执行打包命令:mvn clean package -Dmaven.test.skip=true,如果需要执行单元测试,则直接 mvn package。
使用spring-boot-maven-plugin生成的jar 包含了所有第三方依赖的jar包。如下是fat jar目录结构,包含三个一级目录: BOOT-INF、META-INF和org。
一个jar包要能够运行,那么必须在其根目录下的 META-INF 目录下的 MANIFEST.MF 文件中声明 Main-Class 这个属性。
如下图所示,可以发现,它的 Main-Class 指定的值是 org.springframework.boot.loader.JarLauncher, spring boot 会通过这个类去间接的执行 Start-Class 指定的类,即我们的主类。
三、上传jar包和配置文件
将 jar 包上传至服务器,同时把生产环境的配置文件(比如 application.yml)修改好之后放到与 jar 文件相同的目录,运行:java -jar my-project-0.0.1.jar,不需要的时候 Ctrl+c 就退出,如果需要一直运行,可设置成开机启动。
打包的时候,如果没有将配置文件加载进去,或者有些系统,关于一些数据库或其它第三方账户等信息,由于安全问题,其配置并不会提前配置在项目中暴露给开发者。对于这样的情况,我们在运行程序的时候,能够通过参数指定一个外部配置文件。
java -jar my-project-0.0.1.jar --spring.config.location=application.properties