日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java 增量编译_java增量/全量编译接口应用

發(fā)布時(shí)間:2024/4/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 增量编译_java增量/全量编译接口应用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JavaCompile

Java compile是一個(gè)自動(dòng)增量/全量編譯java的api接口應(yīng)用。

包含以下特性:

全量編譯

增量編譯

svnkit接口(svn操作web接口)

全流程使用案例

JavaCompile

說(shuō)在最前面的話

開(kāi)發(fā)狀態(tài)

原理

快速開(kāi)始

使用示例

功能說(shuō)明

Java compile實(shí)現(xiàn)邏輯

目標(biāo)

增量編譯實(shí)現(xiàn)

全量編譯實(shí)現(xiàn)

開(kāi)發(fā)計(jì)劃(TODO)

說(shuō)在最前面的話

本人只是一枚從事運(yùn)維6年的老兵,從今年年初一直在構(gòu)建自動(dòng)化運(yùn)維平臺(tái),從持續(xù)交互著手,流程最開(kāi)始的就是代碼的抽包編譯(這里說(shuō)的java),然后研究了一下關(guān)于java的編譯的相關(guān)知識(shí)。

傳統(tǒng)的開(kāi)發(fā)人員直接利用java編程工具直接對(duì)java進(jìn)行編譯,然后就是maven,ant等等工具對(duì)java編譯。當(dāng)然也少不了javac,我想大部分學(xué)習(xí)java的同學(xué)都是從javac來(lái)編譯開(kāi)始。

廢話不多說(shuō),開(kāi)始說(shuō)正題。

自動(dòng)化運(yùn)維體系就是將一切可以自動(dòng)化的東西自動(dòng)化,減少人工干預(yù)。

早期我們會(huì)經(jīng)歷這樣的一個(gè)階段

目前就我所經(jīng)歷的java抽包編譯的這么一個(gè)發(fā)展,其中我們也使用過(guò)teamcity來(lái)進(jìn)行編譯,后來(lái)由于適應(yīng)性的問(wèn)題放棄。目前我們使用開(kāi)發(fā)人員自己開(kāi)發(fā)的java web打包工具,原理就是利用mvn命令打整包,然后通過(guò)svn命令獲取相關(guān)文件增量抽包,這樣的一個(gè)好處就是純web實(shí)現(xiàn),無(wú)需人工干涉。唯一不好的地方就是即使maven庫(kù)是私有庫(kù),但是mvn去編clean到生成包的過(guò)程還是很慢。根據(jù)java工程的大小大概需要幾分鐘甚至更久的時(shí)間。

開(kāi)發(fā)狀態(tài)

本人只是一個(gè)java初學(xué)者,只是非常粗糙的完成了相應(yīng)的功能,并進(jìn)行了簡(jiǎn)單的測(cè)試。

原理

Java全量編譯:?通過(guò)mvn命令直接對(duì)應(yīng)用打包。

Java增量編譯:?通過(guò)java8自帶的ToolProvider來(lái)對(duì)java進(jìn)行增量編譯。

快速開(kāi)始

準(zhǔn)備tomcat環(huán)境,建議tomcat8以上

在附件處下載最新已經(jīng)編譯完成好的pack.war部署到tomcat根目錄

修改對(duì)應(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

#源碼路徑(相對(duì)于項(xiàng)目路徑)

src.java = /src/main/java/

#配置資料文件路徑(相對(duì)于項(xiàng)目路徑)

src.resources = /src/main/resources/

#WebRoot路徑(相對(duì)于項(xiàng)目路徑)

src.webapp = /src/main/webapp/

使用示例

功能說(shuō)明

執(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)

通過(guò)java svnkit登陸svn服務(wù)

獲取svn的提交歷史

選中一條或者多條提交commit去編譯相關(guān)代碼

由于實(shí)時(shí)從svnkit獲取svn提交記錄非常慢(根數(shù)據(jù)量以及網(wǎng)絡(luò)相關(guān)),建議將添加定時(shí)任務(wù)定期將svn提交記錄保存到數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)獲取提交記錄

根據(jù)revision去獲取提交文件,如果涉及到.java文件去通過(guò)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

開(kāi)發(fā)計(jì)劃(TODO)

添加git支持

歡迎來(lái)撩!

總結(jié)

以上是生活随笔為你收集整理的java 增量编译_java增量/全量编译接口应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。