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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ant构建项目迁移到gradle_自动化构建、自动化部署发布一览

發(fā)布時(shí)間:2024/10/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ant构建项目迁移到gradle_自动化构建、自动化部署发布一览 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在軟件系統(tǒng)開發(fā)的過程中,一個(gè)項(xiàng)目工程通常會包含很多的代碼文件、配置文件、第三方文件、圖片、樣式文件等等,是如何將這些文件有效的組裝起來最終形成一個(gè)可以流暢使用的應(yīng)用程序的呢?答案是借助構(gòu)建工具或策略。就好像一場大型音樂會上總指揮將不同的管弦樂有效的協(xié)調(diào)起來,完成一場精彩絕倫的演出。而如果在構(gòu)建的過程中依賴人手工進(jìn)行編譯,工作起來會很繁瑣,于是就有了自動化構(gòu)建、自動化發(fā)布、部署的想法和探索,通過使用程序自動化的完成系列操作,將大大提升工作效率。

我們?nèi)粘=佑|到的通常有前端和后端的開發(fā)項(xiàng)目,前端使用框架又通常有jQuery、vue、react等,后端又有CC++、Java、Python、Go、node等不同編程語言的不同框架項(xiàng)目,每種開發(fā)框架使用的構(gòu)建工具會有一定的區(qū)別,但在做自動化構(gòu)建的思路上有一定的相通性,這里找?guī)卓罟ぞ邅碚f一下自動化構(gòu)建、發(fā)布的過程、思路和原則。

一、MakeCmake

如果在Linux系統(tǒng)上使用過開源項(xiàng)目的同學(xué)可能了解過make、makefile,首先系統(tǒng)已安裝了gcc或g++等C環(huán)境編譯器,我們通常下載完開源源代碼并執(zhí)行make,程序就自動的按照makefile中約定的規(guī)則將.c或.cpp的文件編譯成可執(zhí)行的程序文件,通常執(zhí)行make install 將編譯好的程序、配置文件放置到指定的目錄下完成程序的部署安裝。當(dāng)然這里說的是編譯別人已經(jīng)寫的程序,如果是自己從頭到尾的開發(fā)C、C++項(xiàng)目,則需要自己來編寫makefile文件,makefile就是一系列的規(guī)則約束,將不同的程序文件鏈接起來,就好像一個(gè)演出,每個(gè)演員有自己的劇本和臺詞,還有一個(gè)負(fù)責(zé)將不同演員銜接好并按照既定的劇情推進(jìn)的連接人----導(dǎo)演。Cmake可以理解為Make的升級版,不需要編寫復(fù)雜的makefile文件,而是通過Cmakelist來自動生成makefile,不過Cmakelist也是一種編譯的規(guī)則約束,相對makefile更簡約一些。

二、AntMaven

在構(gòu)建Java類的項(xiàng)目時(shí),通常采用的有Ant、Maven和Gradle。當(dāng)然也可以手工寫腳本借助javac編譯或通過IDE等相對原始的構(gòu)建方式,不過追本溯源Ant、Maven和Gradle也都是基于原始的構(gòu)建原則進(jìn)行封裝,從而提供更友好、更有效率的構(gòu)建流程。Ant是通過l編寫build.xm構(gòu)建規(guī)則進(jìn)行程序的編譯打包,有點(diǎn)類似makefile。Maven和Gradle都采用包依賴的方式進(jìn)行管理,Maven的POM.xml用groupId、artifactId、version組成的Coordination(坐標(biāo))唯一標(biāo)識一個(gè)依賴,Gradle的思路和Maven類似但做法上不同,它包含build.gradle和settings.gradle兩個(gè)文件。Maven和Gradle有倉庫的概念,用于存放項(xiàng)目依賴的第三方庫,這樣在制作war包時(shí)不用把所有依賴的第三方文件都放到里面,而是實(shí)際程序啟動時(shí)根據(jù)環(huán)境的設(shè)置找對應(yīng)的依賴文件,不過Ant制作的war包是提前把依賴的文件都放進(jìn)去。

三、Grunt、Gulp、Webpack

前端的構(gòu)建工具常見的有Grunt、Gulp、Webpack三種,gulp是一個(gè)自動化構(gòu)建工具,是Grunt的升級版,主要用來設(shè)定程序自動處理靜態(tài)資源的工作,也即是對前端項(xiàng)目資源進(jìn)行打包,通常有些項(xiàng)目文件很大,使用Gulp壓縮之后文件的體積就變的很小而功能不減。Webpack側(cè)重于前端模塊的打包,最初Webpack本身就是為前端JS代碼打包而設(shè)計(jì)的,后來被擴(kuò)展到其他資源的打包處理。Webpack是通過loader(加載器)和plugins(插件)對資源進(jìn)行處理的。Gulp是對整個(gè)前端資源進(jìn)行整合、歸置,至于文件之間的調(diào)用關(guān)系是不做具體的管理,而Webpack是通過解析文件之間的引用關(guān)系進(jìn)行資源的管理。

四、Jenkins

Jenkins是一個(gè)集構(gòu)建、發(fā)布、部署為一體的綜合性工具,DevOps中常提到CI/CD(自動化構(gòu)建、部署),但它本身是不提供構(gòu)建、發(fā)布和部署的功能,而是可以在其上安裝插件的方式與其他構(gòu)建、發(fā)布、部署工具形成連動,它更像是一個(gè)集成能力特別強(qiáng)的調(diào)度、協(xié)調(diào)工具,借助于它的這種特性,現(xiàn)在通常的做法是用戶提交代碼到版本倉庫(GitHub、GitLab),Jenkins定期從倉庫中獲取最新代碼并調(diào)用打包工具進(jìn)行項(xiàng)目構(gòu)建,構(gòu)建成功后將程序包寫入到docker鏡像推送到鏡像服務(wù)器,進(jìn)而通知應(yīng)用服務(wù)器拉取鏡像文件啟動應(yīng)用。當(dāng)然中間的流程根據(jù)實(shí)際的情況有所不同,比如構(gòu)建war包部署到tomcat服務(wù)器中,亦或者Android 應(yīng)用構(gòu)建apk包發(fā)布到應(yīng)用商店,供下載驗(yàn)證。

限于篇幅的原因,沒有對各類構(gòu)建工具進(jìn)行更詳細(xì)的說明和操作展示,自動化構(gòu)建、發(fā)布部署的產(chǎn)品也不止這些,GitLab的runner也能實(shí)現(xiàn)類似的功能效果,本文的這些將會在后續(xù)分別進(jìn)行深入更細(xì)致的介紹。本文更希望透過工具本身了解工具設(shè)計(jì)的思路和原則,并盡可能的將這些思路用在我們的產(chǎn)品研發(fā)以及處理問題上。

文中提到的這些工具都是被廣泛使用、經(jīng)得住使用考驗(yàn)的好產(chǎn)品,首先它們都是立足于解決實(shí)際工作中迫切的問題,其次操作使用較友好,另外設(shè)計(jì)的產(chǎn)品通用性較強(qiáng),不是陷于某一類具體的問題,而是從更廣泛的角度抽取出本質(zhì)性的解決方案。再者具有較好的兼容性,特別是Jenkins,能夠與主流開發(fā)過程很好的契合,很好的打通、解決了一連串構(gòu)建、發(fā)布、部署的壁壘,它的設(shè)計(jì)理念不是什么都由我自己來做,而是提供對接的方式將成熟好用的產(chǎn)品嵌合進(jìn)來,形成一個(gè)更強(qiáng)大的“航空母艦”平臺。就好像蘋果公司生產(chǎn)的iPhone,手機(jī)的零件都不蘋果自己生產(chǎn),而是集眾人之所長充分發(fā)揮其特性,以更流暢、更順滑的方式將所有內(nèi)容串聯(lián)起來,做成一直被別人模仿的引領(lǐng)性產(chǎn)品。這對我們的產(chǎn)品開發(fā)、設(shè)計(jì)甚至做事的方式都是很好的啟示。

總結(jié)

以上是生活随笔為你收集整理的ant构建项目迁移到gradle_自动化构建、自动化部署发布一览的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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