一个spring boot项目,如果能够打包成jar文件,就可以脱离IDE,直接通过java -jar 命令启动,很方便。
Intellij idea下启动
先修改pom的packaging为jar
打开terminal窗口 cd进入本项目
可以在target目录下生成springbootweb01-0.0.1-SNAPSHOT.jar文件
执行mvn clean package dependency:copy-dependencies
可以在target目录下生成dependency文件夹,里面为项目的依赖包
将打的包和依赖包都copy到mylib文件夹下
执行下面语句部署
java-Djava.ext.dirs=mylib -jar mylib/springbootweb01-0.0.1-SNAPSHOT.jar
由于target文件会经常由于项目执行变动,比如执行了mvn clean操作,可以将mylib文件夹copy到外部文件夹中,比如放到桌面上的mylib文件夹上
cmd进入cd d:\Users\Desktop
执行
java-Djava.ext.dirs=mylib -jar mylib/springbootweb01-0.0.1-SNAPSHOT.jar
就可以脱离IDE进行项目启动了
也可以写一个start.cmd文件,
在mylib文件夹下新建bin文件夹,建一个start.cmd,
java-Djava.ext.dirs=mylib -jard:/Users/Desktop/mylib/springbootweb01-0.0.1-SNAPSHOT.jar
注意路径使用的是“/”,而不是windows中的“\”
使用-Djava.ext.dirs使用的是Ext Class Loader
而使用-cp 使用的是App Class Loader,其实应该使用App ClassLoader,所以这种方式只是一种取巧的方式。
使用maven的一个自动生成脚本插件
appassembler-maven-plugin
配置参考:使用appassembler-maven-plugin插件生成启动脚本
使用appassembler-maven-plugin插件生成启动脚本
在intellijidea terminal下执行
mvn cleanpackage appassembler:assemble
如果报org.springframework.core.env.EnvironmentCapable错误,那么检查一下pom依赖
org.springframework
spring-core
是不是scope为test
另一个注意事项是:要将
org.springframework.boot
spring-boot-maven-plugin
注释掉,原因参考: https://my.oschina.net/tridays/blog/858378
当使用appassembler-maven-plugin时,不要使用这个插件。
进入到target\springbootweb01\binspringbootweb01.bat就可以启动了
终止的方式有两种:在intellijterminal中 ctrl+c
或netstat–nao|findstr 8080 的PID,强制杀掉
如果想更改端口,那么直接在target\springbootweb01\conf\application.properties中进行修改,之后重启就可以了,不需要重新打包了。
如果想部署到生产环境下,只要将target\springbootweb01文件夹部署到服务器上就可以了
相对比,第一种方式是自己动手,而第二种方式更完善。
在gradle下,先添加依赖,指定好springBootVersion版本
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
之后terminal下使用gradle build,就会在build文件夹下创建libs文件夹及resources等文件夹,之后直接cd进入libs下执行java –jarcore-0.0.1-SNAPSHOT.jar
以上是windows下由maven构建以及gradle构建的spring boot项目的打包及发布方法
在linux虚拟机下直接将jar包 transfer to /root目录下 执行java -jar xxx.jar就可以在虚拟机上启动了