spring boot 部署为jar

前言

一直在 ide 中敲代码,使用命令行mvn spring-boot:run或者gradlew bootRun来运行 spring boot 项目。想来放到 prod 上面也应该很简单。然而今天试了下,各种问题。最大错误是 1.4 的 bug:

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: Unable to resolve persistence unit root URL

这个错误使我一直以为自己的代码有问题。找了半天没找到,最后想既然命令行可以运行 ok,那么一个 fat jar 失败肯定不对了。于是上 github 去问,以为石沉大海准备睡觉的。想不到的是 spring boot 的成员秒回,找到问题是 1.4 版本中 hibernate 自动配置的问题,想我根本不需要 hibernate,删除就可以了。

github 原问题:https://github.com/spring-projects/spring-boot/issues/6927


部署为可运行的 jar

spring boot 已经尽可能把需要配置的东西自动化了,我还傻傻的像以前 springmvc 那样补充各种配置,比如加一个数据源 druid。然而大可不必,使用默认的就好,等需求不满足的时候,在进行修改就可以了。

同样的,既然内置的 tomat 可以很好的运行,为啥非要自己手动部署 war 包?

在 gradle build 或者 maven package 之后,会得到一个 jar,这个 jar 是 spring boot 修改过的 jar,可以直接运行。
运行方式:
maven 添加 plugin

      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>${springboot.version}</version>
      </plugin>

然后执行打包

mvn clean install package spring-boot:repackage
java -jar xxxx.jar

看到比较好的 linux 脚本:

start.sh

#!/bin/sh

rm -f tpid

nohup java -jar xx.jar --spring.profiles.active=dev > /dev/null 2>&1 &

echo $! > tpid

echo Start Success!

stop.sh

#!/bin/sh
APP_NAME=myapp

tpid=ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'
if [${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 5
tpid=ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'
if [${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi

check.sh

#!/bin/sh
APP_NAME=myapp

tpid=ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'
if [${tpid} ]; then
echo 'App is running.'
else
echo 'App is NOT running.'
fi

kill.sh

#!/bin/sh
APP_NAME=myapp

tpid=ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'
if [${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
fi

博主不得转载,但还是看了怎么办:
Spring Boot 部署与服务配置


EOF

  • 本文作者: Ryan Miao
  • 本文链接: https://www.cnblogs.com/woshimrf/p/springboot-jar.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。