java 增量编译_java增量/全量编译接口应用
JavaCompile
Java compile是一個(gè)自動(dòng)增量/全量編譯java的api接口應(yīng)用。
包含以下特性:
全量編譯
增量編譯
svnkit接口(svn操作web接口)
全流程使用案例
JavaCompile
說在最前面的話
開發(fā)狀態(tài)
原理
快速開始
使用示例
功能說明
Java compile實(shí)現(xiàn)邏輯
目標(biāo)
增量編譯實(shí)現(xiàn)
全量編譯實(shí)現(xiàn)
開發(fā)計(jì)劃(TODO)
說在最前面的話
本人只是一枚從事運(yùn)維6年的老兵,從今年年初一直在構(gòu)建自動(dòng)化運(yùn)維平臺(tái),從持續(xù)交互著手,流程最開始的就是代碼的抽包編譯(這里說的java),然后研究了一下關(guān)于java的編譯的相關(guān)知識(shí)。
傳統(tǒng)的開發(fā)人員直接利用java編程工具直接對java進(jìn)行編譯,然后就是maven,ant等等工具對java編譯。當(dāng)然也少不了javac,我想大部分學(xué)習(xí)java的同學(xué)都是從javac來編譯開始。
廢話不多說,開始說正題。
自動(dòng)化運(yùn)維體系就是將一切可以自動(dòng)化的東西自動(dòng)化,減少人工干預(yù)。
早期我們會(huì)經(jīng)歷這樣的一個(gè)階段
目前就我所經(jīng)歷的java抽包編譯的這么一個(gè)發(fā)展,其中我們也使用過teamcity來進(jìn)行編譯,后來由于適應(yīng)性的問題放棄。目前我們使用開發(fā)人員自己開發(fā)的java web打包工具,原理就是利用mvn命令打整包,然后通過svn命令獲取相關(guān)文件增量抽包,這樣的一個(gè)好處就是純web實(shí)現(xiàn),無需人工干涉。唯一不好的地方就是即使maven庫是私有庫,但是mvn去編clean到生成包的過程還是很慢。根據(jù)java工程的大小大概需要幾分鐘甚至更久的時(shí)間。
開發(fā)狀態(tài)
本人只是一個(gè)java初學(xué)者,只是非常粗糙的完成了相應(yīng)的功能,并進(jìn)行了簡單的測試。
原理
Java全量編譯:?通過mvn命令直接對應(yīng)用打包。
Java增量編譯:?通過java8自帶的ToolProvider來對java進(jìn)行增量編譯。
快速開始
準(zhǔn)備tomcat環(huán)境,建議tomcat8以上
在附件處下載最新已經(jīng)編譯完成好的pack.war部署到tomcat根目錄
修改對應(yīng)配置文件,啟動(dòng)即可
配置文件修改如下(配置文件路徑:WEB-INF/classes/config.properties)
#svn地址
svn.url = http://code.taobao.org/svn/mjfinal_cms
#svn賬號(hào)
svn.username = huanggaoming
#svn密碼
svn.password = 123456789
#svn項(xiàng)目路徑
svn.project_suffix = /trunk
#默認(rèn)獲取svn提交的天數(shù)
svn.interval_days = 7
#源碼路徑(相對于項(xiàng)目路徑)
src.java = /src/main/java/
#配置資料文件路徑(相對于項(xiàng)目路徑)
src.resources = /src/main/resources/
#WebRoot路徑(相對于項(xiàng)目路徑)
src.webapp = /src/main/webapp/
使用示例
功能說明
執(zhí)行本地命令
獲取svn提交歷史
checkout代碼
mvn全量編譯
根據(jù)本地java文件編譯
根據(jù)svn版本號(hào)增量編譯打包
更新svn文件并返回文件md5值
Java compile實(shí)現(xiàn)邏輯
目標(biāo)
根據(jù)svn的提交歷史,自動(dòng)編譯相關(guān)代碼。覆蓋: 增量編譯和全量編譯。(后續(xù)添加git支持)
增量編譯實(shí)現(xiàn)
通過java svnkit登陸svn服務(wù)
獲取svn的提交歷史
選中一條或者多條提交commit去編譯相關(guān)代碼
由于實(shí)時(shí)從svnkit獲取svn提交記錄非常慢(根數(shù)據(jù)量以及網(wǎng)絡(luò)相關(guān)),建議將添加定時(shí)任務(wù)定期將svn提交記錄保存到數(shù)據(jù)庫,從數(shù)據(jù)庫獲取提交記錄
根據(jù)revision去獲取提交文件,如果涉及到.java文件去通過ToolProvider去編譯打包
非.java文件根據(jù)標(biāo)準(zhǔn)的目錄結(jié)構(gòu)直接打包到一個(gè)增量包
增量編譯完成
全量編譯實(shí)現(xiàn)
java cmd直接調(diào)用mvn進(jìn)行全量打包
涉及命令:
mvn clean
mvn compile
mvn clean package -Dmaven.test.skip=true
開發(fā)計(jì)劃(TODO)
添加git支持
歡迎來撩!
總結(jié)
以上是生活随笔為你收集整理的java 增量编译_java增量/全量编译接口应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: if java_Java 条件语句
- 下一篇: jquery 遍历java对象的属性_用