摘要:需求是能够查看当前应用对应的是哪个源码版本,什么时候编译的,以确定某些错误是因为没有部署新版本导致的,还是存在未解决。基本思路是在编译之前,把构建时间和版本写入一个文本文件中,运行时由后台代码读取,发送给前端。
需求是能够查看当前web应用对应的是哪个源码版本,什么时候编译的,以确定某些错误是因为没有部署新版本导致的,还是存在未解决bug。
对sbt和scala不熟,所以这个方案可能很笨拙,但能解决问题。基本思路是在编译之前,把构建时间和GIT版本写入一个文本文件中,运行时由后台java代码读取,发送给前端。
sbt文件可以是.sbt后缀,也可以是.scala后缀,如果是.scala后缀,则限制很少,可以随意做处理,但一般使用的是.sbt后缀文件。.sbt文件中只能写函数,所以把构建信息写入文件的操作都放在函数中。
在.sbt文件中添加以下内容:
import java.text.SimpleDateFormat import java.util.Date ... //函数NowDate取当前时间也就是构建时间 def NowDate(): String = { val now: Date = new Date() val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") val date = dateFormat.format(now) return date } //取GIT的header并写入public文件夹下的文本文件,同时也把构建时间写入另一个文本文件 def createGitHeaderFile(dir:String):sbt.File={ val propFile = sourceDir("/public/data/gitv.txt") try{ val h =Process("git rev-parse HEAD").lines.head IO.write(propFile, h) }catch{ case ex:Exception => { ex.printStackTrace() IO.write(propFile, "ERROR_GET_GIT_HEADER_FAIL") } } val btFile = sourceDir("/public/data/buildtime.txt") val nowText = NowDate() IO.write(btFile, nowText) return file(s"${file(".").getAbsolutePath}/$dir") } //这样写其实只是为了把git版本header写入文件public/data/gitv.txt //这里指定额外的源文件路径,可以调用函数,所以利用这个机会调用上面定义的函数,把构建信息写入 unmanagedSourceDirectories in Compile ++= Seq( createGitHeaderFile("/scala") )
在web项目中的java文件读取构建信息,然后可以进行处理或者发送给前端
istr = env.resourceAsStream("public/data/gitv.txt"); if (istr.nonEmpty()){ InputStream i=istr.get(); BufferedReader reader = new BufferedReader(new InputStreamReader(i)); try { String s = reader.readLine(); if (s!=null){ gitHeader=s; } } catch (IOException e) { e.printStackTrace(); System.out.println("cannot read public/data/gitv.txt"); } } istr = env.resourceAsStream("public/data/buildtime.txt"); if (istr.nonEmpty()){ InputStream i=istr.get(); BufferedReader reader = new BufferedReader(new InputStreamReader(i)); try { String s = reader.readLine(); if (s!=null){ this.buildTime=s; } } catch (IOException e) { e.printStackTrace(); System.out.println("cannot read public/data/buildtime.txt"); } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73811.html
安装工具 pip install cookiecutter 获取模板 cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git 生成项目 timger-mac:scala_sbt_tool timger$ cookiecutter https://github.com/audreyr/cookiecutter...
摘要:为了使用最新的,升级到配置修改根据官网的升级指南,修改文件,更改插件版本号文件中,把和单独加入。此文件为首页的模板。推测可能是版本和版本的首页模板不同,于是到官网下载版本的,找到并覆盖项目的相应文件。添加插件的语句至此,升级成功完成。 为了使用最新的Play WS Api,升级到play 2.6.21 1.配置修改 根据官网的升级指南,修改plugins.sbt文件,更改插件版本号:a...
阅读 3355·2021-10-11 11:06
阅读 2162·2019-08-29 11:10
阅读 1909·2019-08-26 18:18
阅读 3217·2019-08-26 13:34
阅读 1541·2019-08-23 16:45
阅读 1019·2019-08-23 16:29
阅读 2770·2019-08-23 13:11
阅读 3188·2019-08-23 12:58