springboot开发效率不错。但是部署起来,如果全量打jar包,从自己的开发环境拷贝服务器,比较费时(当然也有,增量复制更新文件的方法,这里不探讨)。那么此时,也可以在服务器上,直接把代码从git/svn上拉下来,然后切到检出目录下,直接用mvn命令启动工程,免得打包的麻烦。
当然,也可以直接在服务器上,拉代码,打好jar包,然后用java -jar执行。2种方法都比直接复制jar要来的快。
假设这时候,我想,定时重启这个springboot,那么由于它没有部署在tomcat里,无法通过定时重启tomcat的windows服务或者tomcat脚本来实现。
这时可以如下:
目录
制作一个启动run.bat
在window的计划任务里,调度它
查看控制台日志:
把所有日志输出到springboot的日志文件里
制作一个启动run.bat
rem ---------- 先杀死 当前 正占用8080端口的 先前跑起来的 任务
setlocal enabledelayedexpansion
set port=8080
for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%port%"') do (
if "%%e%" == "" (
set pid=%%d
) else (
set pid=%%e
)
echo !pid!
taskkill /f /pid !pid!
)
rem ---------- 杀进程 结束
rem 一定要切换到目标盘符和目录;如果不写,可以在windows任务属性里定义它
E:
cd E:\java\springboot
git pull
call mvn package
call mvn spring-boot:run -Dmaven.test.skip=true -Dspring-boot.run.jvmArguments="-Xms128m -Xmx1024m"
rem call mvn exec:java -Dexec.mainClass="my.TCPServer" -Dexec.classpathScope=runtime
在window的计划任务里,调度它
这样,基本就能实现目的了。
注意:上面“允许 按需运行任务”,这样可以 手动地 启动/停止 这个任务,做调试用;同时不影响windows的任务计划调度它。
在windows调度时,如果脚本里,不写 盘符切换+目录切换(E:,cd E:\java\springboot\),则也可以在此任务的“属性”-->"操作"-->"编辑"--->"起始于(可选)" 里,写上脚本所在的路径,否则调度不起来。(非常重要!!!)
查看控制台日志:
这里会带来一个问题,就是springboot的运行控制台没有了。如果springboot有日志输出,可以用windows下的tail命令行,来观察按天输出的springboot日志:
set dateStr=%date:~0,4%-%date:~5,2%-%date:~8,2%
echo %dateStr%
tail -f ..\..\applog\%dateStr%\%dateStr%.log
正规做法:把所有日志输出到springboot的日志文件里
//在类的开头定义Logger
private final Logger logger = LoggerFactory.getLogger(this.getClass());
//在需要输出的地方定义------
logger.info("------")。。。。。
logger.debug("------")。。。。。
//把错误日志也输出到log
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error(e.getMessage());
}