本篇文章為大家展示了代碼生成器maven插件源碼怎么編寫(xiě),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司專(zhuān)注于義安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供義安營(yíng)銷(xiāo)型網(wǎng)站建設(shè),義安網(wǎng)站制作、義安網(wǎng)頁(yè)設(shè)計(jì)、義安網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造義安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供義安網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
在寫(xiě)后端項(xiàng)目的時(shí)候,基礎(chǔ)的實(shí)現(xiàn)功能都是增刪查改,通常以表或者指定的數(shù)據(jù)模型為單位進(jìn)行增刪查改。
在大部分的Web項(xiàng)目中,通常寫(xiě)一個(gè)增刪查改需要新建很多個(gè)基礎(chǔ)類(lèi)。
假設(shè)你的項(xiàng)目是由 控制層、服務(wù)層、數(shù)據(jù)訪問(wèn)層組成,那么如果新增一個(gè)表的增刪查改功能,我們就也許需要針對(duì)這個(gè)表創(chuàng)建以下這些類(lèi)。
Model.java ModelController.java IModelService.java ModelService.java IModelDao.java ModelDao.java
創(chuàng)建完成后,某些項(xiàng)目結(jié)構(gòu)是有通用的基礎(chǔ)類(lèi),可能還需要根據(jù)Model類(lèi)型來(lái)添加泛型,這樣又是需要一頓復(fù)制粘貼的操作。
interface IModelService extends IBaseService<Model,Long> {} class ModelService extends BaseService<Model,Long> implements IModelService {} interface IModelDao extends IBaseDao<Model,Long> {} class ModelDao extends BaseDao<Model,Long> implements IModelDao {}
當(dāng)然每個(gè)公司的項(xiàng)目結(jié)構(gòu)都不同,以上操作可能有多有少,但是對(duì)于一個(gè)后臺(tái)系統(tǒng)來(lái)說(shuō),大量類(lèi)似的增刪查改類(lèi)是少不了的。 如果你的項(xiàng)目結(jié)構(gòu)是無(wú)規(guī)律的,那么代碼生成器可能不太適合你
復(fù)制粘貼型代碼生成器
顧名思義,最簡(jiǎn)單也是用的最多的方式,直接將現(xiàn)有的其他類(lèi)似文件復(fù)制一份,改一改關(guān)鍵信息即可。成本最低,耗時(shí)根據(jù)項(xiàng)目需要復(fù)制的文件決定。有可能因?yàn)樯俑哪承﹥?nèi)容導(dǎo)致代碼異常。
總的來(lái)說(shuō),通過(guò)復(fù)制粘貼的方式來(lái)生成代碼,簡(jiǎn)單易用,無(wú)學(xué)習(xí)成本,但是比較容易出錯(cuò),有一定修改成本,耗時(shí)和文件數(shù)量、修改內(nèi)容成正比。
框架自帶代碼生成器
通常和框架綁定,對(duì)于已有的系統(tǒng)難以植入,局限性高。生成的代碼格式較為單一,很難做靈活配置化使用。
自定義代碼生成器
因?yàn)榇蟛糠窒到y(tǒng)的代碼結(jié)構(gòu)比較統(tǒng)一,但又有些不同,所以在市場(chǎng)上沒(méi)有適合自己的生成器的時(shí)候,我們就會(huì)選擇自己寫(xiě)一個(gè),通過(guò)直接執(zhí)行main
方法來(lái)生成文件,定義幾個(gè)參數(shù),在需要生成的時(shí)候進(jìn)行修改執(zhí)行。
本文介紹的代碼生成器主要在此基礎(chǔ)上進(jìn)行擴(kuò)展,通過(guò)maven插件的方式,將需要自定義的參數(shù)通過(guò)插件配置來(lái)運(yùn)行,這樣一套代碼多地使用,只需要添加maven依賴(lài),不需要將生成器的代碼復(fù)制多遍難以維護(hù)。
代碼生成器的原理,大體就是根據(jù)指定的模板,傳入動(dòng)態(tài)的參數(shù),替換模板內(nèi)容,動(dòng)態(tài)生成不同的文件代碼。
通過(guò)maven插件的方式,可以很好的集成到我們的項(xiàng)目中,只需要添加插件依賴(lài),然后添加幾個(gè)配置,執(zhí)行maven相關(guān)命令,就可以完成代碼生成的操作。
這是我在工作當(dāng)中為了給組員提供更優(yōu)質(zhì)的開(kāi)發(fā)體驗(yàn),而編寫(xiě)的一款代碼生成器。
地址: https://github.com/k55k32/simple-codegen
simple-codegen
使用freemarker作為模板引擎,結(jié)合maven插件,使參數(shù)配置簡(jiǎn)單化, 并且多項(xiàng)目使用只需要添加插件依賴(lài),并且修改制定參數(shù),定制好模板,即可一鍵生成代碼。
因?yàn)槟0蹇梢愿鶕?jù)項(xiàng)目自定義,基本所有情況下,只需要定義好模板,配置參數(shù),即可開(kāi)始使用
目前的參數(shù)都算是固定參數(shù),未來(lái)可能還將支持一些動(dòng)態(tài)參數(shù)例如:
讀取表結(jié)構(gòu)作為參數(shù)
直接調(diào)用接口, 獲取返回值作為參數(shù)
直接調(diào)用本地代碼,獲取返回值作為參數(shù)
代碼真的很簡(jiǎn)單,目前總共就一個(gè)模板渲染的功能,大家可以自行看源碼,不懂的可以提Issue, 有優(yōu)化可以提 Pull Request
我真是邊寫(xiě)教程邊上傳,真正的一手實(shí)操經(jīng)驗(yàn)
進(jìn)入 https://issues.sonatype.org
點(diǎn)擊 Sign up 創(chuàng)建賬號(hào)
新建一個(gè)問(wèn)題類(lèi)型為New Project的, 注意Group Id和自己項(xiàng)目pom.xml要一致,如果是自己的域名,需要有域名DNS管理權(quán)限,因?yàn)閭}(cāng)庫(kù)管理員會(huì)要求你添加TXT記錄指向指定地址。如果沒(méi)有自己的域名,可以用自己的Github地址,管理員會(huì)要求你創(chuàng)建一個(gè)指定名稱(chēng)的倉(cāng)庫(kù)
提交申請(qǐng)完成后,管理員就會(huì)通知你用戶已經(jīng)可以上傳快照版本或者發(fā)布版本了
前期注冊(cè)工作就完成了,接下來(lái)是上傳流程,接下來(lái)流程用到的用戶名密碼使用剛剛創(chuàng)建的用戶名密碼
在本地maven配置 settings.xml
內(nèi)添加自己的賬號(hào)密碼(上傳需要), id可以自定義。賬號(hào)密碼可以明文輸入,也可以登陸 https://oss.sonatype.org 點(diǎn)擊右上角用戶名進(jìn)入Profile
, 然后選擇User Token
創(chuàng)建一個(gè)加密的 Access User Token
, 可以替換 settings.xml
內(nèi)的賬號(hào)密碼,這樣可以避免明文保存用戶名密碼
<servers> <server> <id>sonatype-center</id> <username>youRegisterUsername</username> <password>youRegisterPassword</password> </server> </servers>
在 pom.xml
內(nèi)添加遠(yuǎn)程發(fā)布倉(cāng)庫(kù)地址,注意id需要和 settings-xml
配置的一致
<distributionManagement> <repository> <id>sonatype-center</id> <name>releases repo</name> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url> </repository> <snapshotRepository> <id>sonatype-center</id> <name>snapshots repo</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> </distributionManagement>
pom.xml
文件內(nèi)容如要標(biāo)準(zhǔn)化,需要添加以下標(biāo)簽描述,內(nèi)容自定義,已添加請(qǐng)忽略,可參考 pom.xml
<name>simple-codegen</name> <url>https://diamondfsd.com</url> <description> simple code generate maven plugin. Template rendering through Java and freemarker. </description> <developers> <developer> <id>diamondfsd</id> <name>Diamond Zhou</name> <email>diamondfsd@gmail.com</email> <url>https://diamondfsd.com</url> <timezone>8</timezone> </developer> </developers> <licenses> <license> <name>The MIT License</name> <url>https://opensource.org/licenses/MIT</url> <distribution>repo</distribution> </license> </licenses> <scm> <url> https://github.com/k55k32/simple-codegen.git </url> </scm>
簽名教程
windows版本密鑰生成工具下載: https://gpg4win.org/download.html
安裝完成后的名字叫: Kleopatra
打開(kāi)后,新建一個(gè)密鑰對(duì),創(chuàng)建完成后。
注意如果是在IDE等環(huán)境中運(yùn)行maven,安裝完Kleopatra需要重啟IDE,否則環(huán)境變量未生效,執(zhí)行maven插件的時(shí)候,找不到 gpg
命令
pom.xml
添加插件配置
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin>
執(zhí)行 mvn clean deploy
上傳到中央倉(cāng)庫(kù)
登陸 https://oss.sonatype.org/ 點(diǎn)擊左側(cè) Staging Repositoryies
菜單,然后下拉到最下面,可以找到你剛剛上傳的包
選中改包點(diǎn)擊 Close
Close
完成后,點(diǎn)擊 Release
(如果Close失敗, 點(diǎn)擊項(xiàng)目,可以在底部Activity內(nèi)看到失敗原因,根據(jù)原因自行解決)
Release
完成后,你的包就進(jìn)入了中央倉(cāng)庫(kù)同步隊(duì)列了,同步完成后,其他人就可以直接在 pom.xml
內(nèi)添加你的包依賴(lài)了,具體的同步時(shí)間,官方給出的是10分鐘內(nèi)會(huì)同步到中央倉(cāng)庫(kù),可以引用依賴(lài)。然后2小時(shí)內(nèi)同步到搜索引擎,可以在 https://search.maven.org 搜索到。
上述內(nèi)容就是代碼生成器maven插件源碼怎么編寫(xiě),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
標(biāo)題名稱(chēng):代碼生成器maven插件源碼怎么編寫(xiě)
文章地址:http://www.rwnh.cn/article36/igissg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、云服務(wù)器、外貿(mào)建站、響應(yīng)式網(wǎng)站、靜態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)