摘要:需求是能夠查看當(dāng)前應(yīng)用對(duì)應(yīng)的是哪個(gè)源碼版本,什么時(shí)候編譯的,以確定某些錯(cuò)誤是因?yàn)闆](méi)有部署新版本導(dǎo)致的,還是存在未解決。基本思路是在編譯之前,把構(gòu)建時(shí)間和版本寫(xiě)入一個(gè)文本文件中,運(yùn)行時(shí)由后臺(tái)代碼讀取,發(fā)送給前端。
需求是能夠查看當(dāng)前web應(yīng)用對(duì)應(yīng)的是哪個(gè)源碼版本,什么時(shí)候編譯的,以確定某些錯(cuò)誤是因?yàn)闆](méi)有部署新版本導(dǎo)致的,還是存在未解決bug。
對(duì)sbt和scala不熟,所以這個(gè)方案可能很笨拙,但能解決問(wèn)題。基本思路是在編譯之前,把構(gòu)建時(shí)間和GIT版本寫(xiě)入一個(gè)文本文件中,運(yùn)行時(shí)由后臺(tái)java代碼讀取,發(fā)送給前端。
sbt文件可以是.sbt后綴,也可以是.scala后綴,如果是.scala后綴,則限制很少,可以隨意做處理,但一般使用的是.sbt后綴文件。.sbt文件中只能寫(xiě)函數(shù),所以把構(gòu)建信息寫(xiě)入文件的操作都放在函數(shù)中。
在.sbt文件中添加以下內(nèi)容:
import java.text.SimpleDateFormat import java.util.Date ... //函數(shù)NowDate取當(dāng)前時(shí)間也就是構(gòu)建時(shí)間 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并寫(xiě)入public文件夾下的文本文件,同時(shí)也把構(gòu)建時(shí)間寫(xiě)入另一個(gè)文本文件 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") } //這樣寫(xiě)其實(shí)只是為了把git版本header寫(xiě)入文件public/data/gitv.txt //這里指定額外的源文件路徑,可以調(diào)用函數(shù),所以利用這個(gè)機(jī)會(huì)調(diào)用上面定義的函數(shù),把構(gòu)建信息寫(xiě)入 unmanagedSourceDirectories in Compile ++= Seq( createGitHeaderFile("/scala") )
在web項(xiàng)目中的java文件讀取構(gòu)建信息,然后可以進(jìn)行處理或者發(fā)送給前端
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"); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/73811.html
安裝工具 pip install cookiecutter 獲取模板 cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git 生成項(xiàng)目 timger-mac:scala_sbt_tool timger$ cookiecutter https://github.com/audreyr/cookiecutter...
摘要:為了使用最新的,升級(jí)到配置修改根據(jù)官網(wǎng)的升級(jí)指南,修改文件,更改插件版本號(hào)文件中,把和單獨(dú)加入。此文件為首頁(yè)的模板。推測(cè)可能是版本和版本的首頁(yè)模板不同,于是到官網(wǎng)下載版本的,找到并覆蓋項(xiàng)目的相應(yīng)文件。添加插件的語(yǔ)句至此,升級(jí)成功完成。 為了使用最新的Play WS Api,升級(jí)到play 2.6.21 1.配置修改 根據(jù)官網(wǎng)的升級(jí)指南,修改plugins.sbt文件,更改插件版本號(hào):a...
摘要:為啥需要,因?yàn)槟芨旄奖愕倪M(jìn)行代碼提示與代碼補(bǔ)全,每個(gè)人的精力都是有限的,能打一個(gè)字母出來(lái)結(jié)果就絕對(duì)不打第二個(gè)。 tools zsh為啥需要zsh,因?yàn)槟芨旄奖愕倪M(jìn)行代碼提示與代碼補(bǔ)全,每個(gè)人的精力都是有限的,能打一個(gè)字母出來(lái)結(jié)果就絕對(duì)不打第二個(gè)。 plugins=(git brew mvn svn svn-fast-info sbt go pip zsh-syntax-high...
閱讀 3409·2021-10-11 11:06
閱讀 2191·2019-08-29 11:10
閱讀 1952·2019-08-26 18:18
閱讀 3260·2019-08-26 13:34
閱讀 1565·2019-08-23 16:45
閱讀 1044·2019-08-23 16:29
閱讀 2804·2019-08-23 13:11
閱讀 3233·2019-08-23 12:58