SBT 工程部署记录
1、出现 sbt 下载错误
- 查看 ~/.sbt/repositories
- 在 built.sbt 文件中添加(libraryDependencies 在什么文件,下面这一句就加在什么文件中)
resolvers += "Sonatype releases" at "https://oss.sonatype.org/content/repositories/releases"
2、中文编码错误,除了要看文件编码是否 UTF-8 之外,还要在 built.sbt 中加一句
javacOptions in shared ++= Seq("-encoding", "UTF-8")
3、SBT 改源
下载sbt启动jar包:
mkdir ~/bin
wget https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.11/sbt-launch.jar
创建~/bin/sbt脚本:
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -Dfile.encoding=UTF-8 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "[email protected]"
注:Java8开始不在需要-XX:MaxPermSize参数
给脚本可执行权限:
chmod u+x ~/bin/sbt
使用Repox加速sbt
Repox(社区公服,若大家觉得好友的话希望能捐助) 是一款:“改善sbt解决依赖的速度”的开源软件。 我们可以使用它来解决下载依赖过慢和伟大的墙造成的很多资源不能访问问题。这里摘录官方WIKI的入门指南
配置 ~/.sbt/repositories 文件(如果文件还未创建过,则创建它),除了本地缓存外,仅使用repox作为仓库。文件内容如下:
[repositories]
local
repox-maven: http://repox.gtan.com:8078/
repox-ivy: http://repox.gtan.com:8078/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
请注意,repox-maven 与 repox-ivy 的次序是重要的,请将 repox-maven 写在 repox-ivy 的前面.
如果你使用命令行,请在sbt命令行参数中添加 -Dsbt.override.build.repos=true 。例如我的sbt shell脚本的内容是这样的:
#!/bin/sh
export SBT_OPTS="-Dsbt.override.build.repos=true"
exec java -Xmx512M ${SBT_OPTS} -jar $(dirname "$0")/sbt-launch.jar "[email protected]"
如果使用jetbrains IDEA,修改 Preferences->SBT->JVM Options->VM parameters,保证它包含
-Dsbt.override.build.repos=true
如果使用 activator,请打开 ~/.activator/activatorconfig.txt 文件(如果此文件不存在,请创建它。很明显,配置文件满天飞也是 typesafe/sbt team的诸多恶趣味之一),在其中添加一行
-Dsbt.override.build.repos=true
4、Play Scala 重启时总是不生成 pidfile
start_script.sh 如下:
#!/bin/bash
nohup bash -c "/usr/local/apps/app_name/current/api/target/universal/stage/bin/app_name -J-Xmx5120m -J-Xms5120m -J-Xmn1800m -J-Xss256k -J-XX:ParallelGCThreads=8 -J-XX:+UseParNewGC -J-XX:+UseConcMarkSweepGC -J-XX:SurvivorRatio=8 -J-XX:TargetSurvivorRatio=90 -J-XX:MaxTenuringThreshold=15 -Dpidfile.path=/usr/local/apps/app_name/shared/pids/play/9401 -Dhttp.port=9401 -Dfile.encoding=utf8 -Dlogger.file=/usr/local/apps/app_name/current/api/conf/logback.xml > /dev/null 2>&1 &" &> /dev/null
stop_script.sh 如下:
#!/bin/bash
# the directory where play pids are stored
pids=/usr/local/apps/app_name/shared/pids/play
for file in $(ls -x1 $pids); do
pid=$(cat $pids/$file 2> /dev/null)
if [ "$pid" != "" ]; then
echo "Stopping api server $pid"
kill $pid; true
fi
done
rm -f $pids/*
在 stop_script.sh 执行后,再执行 start_script.sh,Play Java 工程可以正常工作,然而 Play Scala 死活不能生成 pidfile,虽然服务可以启动。
解决方法:
stop_script.sh 中 kill 需要加上 -9,强杀!(都是小坑…害死人)
上一篇: 部署前后端分离项目
推荐阅读
-
springboot工程jar包部署到云服务器的方法
-
springboot工程jar包部署到云服务器的方法
-
vs2008安装部署工程制作教程[图文]
-
vs2008安装部署工程制作教程[图文]
-
web api 记录部署IIS获取服务器地址的类型
-
在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记
-
记录.NET Core部署到Linux之.NET Core环境搭建(1)
-
关于tomcat部署工程的错误
-
kubeadm 部署kubernetes 1.11.0 的问题记录
-
Maven发布工程至Tomcat并进行远程调试要点记录