代碼生成器maven插件源碼怎么編寫

本篇文章為大家展示了代碼生成器maven插件源碼怎么編寫,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)公司專注于義安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供義安營銷型網(wǎng)站建設(shè),義安網(wǎng)站制作、義安網(wǎng)頁設(shè)計、義安網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造義安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供義安網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

為什么要寫一個代碼生成器

在寫后端項目的時候,基礎(chǔ)的實現(xiàn)功能都是增刪查改,通常以表或者指定的數(shù)據(jù)模型為單位進(jìn)行增刪查改。

在大部分的Web項目中,通常寫一個增刪查改需要新建很多個基礎(chǔ)類。

假設(shè)你的項目是由 控制層、服務(wù)層、數(shù)據(jù)訪問層組成,那么如果新增一個表的增刪查改功能,我們就也許需要針對這個表創(chuàng)建以下這些類。

Model.java
ModelController.java
IModelService.java
ModelService.java
IModelDao.java
ModelDao.java

創(chuàng)建完成后,某些項目結(jié)構(gòu)是有通用的基礎(chǔ)類,可能還需要根據(jù)Model類型來添加泛型,這樣又是需要一頓復(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)然每個公司的項目結(jié)構(gòu)都不同,以上操作可能有多有少,但是對于一個后臺系統(tǒng)來說,大量類似的增刪查改類是少不了的。 如果你的項目結(jié)構(gòu)是無規(guī)律的,那么代碼生成器可能不太適合你

代碼生成器的級別

  1. 復(fù)制粘貼型代碼生成器
    顧名思義,最簡單也是用的最多的方式,直接將現(xiàn)有的其他類似文件復(fù)制一份,改一改關(guān)鍵信息即可。成本最低,耗時根據(jù)項目需要復(fù)制的文件決定。有可能因為少改某些內(nèi)容導(dǎo)致代碼異常。

總的來說,通過復(fù)制粘貼的方式來生成代碼,簡單易用,無學(xué)習(xí)成本,但是比較容易出錯,有一定修改成本,耗時和文件數(shù)量、修改內(nèi)容成正比。

  1. 框架自帶代碼生成器
    通常和框架綁定,對于已有的系統(tǒng)難以植入,局限性高。生成的代碼格式較為單一,很難做靈活配置化使用。

  2. 自定義代碼生成器
    因為大部分系統(tǒng)的代碼結(jié)構(gòu)比較統(tǒng)一,但又有些不同,所以在市場上沒有適合自己的生成器的時候,我們就會選擇自己寫一個,通過直接執(zhí)行main方法來生成文件,定義幾個參數(shù),在需要生成的時候進(jìn)行修改執(zhí)行。

本文介紹的代碼生成器主要在此基礎(chǔ)上進(jìn)行擴展,通過maven插件的方式,將需要自定義的參數(shù)通過插件配置來運行,這樣一套代碼多地使用,只需要添加maven依賴,不需要將生成器的代碼復(fù)制多遍難以維護。

自定義代碼生成器maven插件

代碼生成器的原理,大體就是根據(jù)指定的模板,傳入動態(tài)的參數(shù),替換模板內(nèi)容,動態(tài)生成不同的文件代碼。

通過maven插件的方式,可以很好的集成到我們的項目中,只需要添加插件依賴,然后添加幾個配置,執(zhí)行maven相關(guān)命令,就可以完成代碼生成的操作。

這是我在工作當(dāng)中為了給組員提供更優(yōu)質(zhì)的開發(fā)體驗,而編寫的一款代碼生成器。

  • 地址: https://github.com/k55k32/simple-codegen

  • simple-codegen 使用freemarker作為模板引擎,結(jié)合maven插件,使參數(shù)配置簡單化, 并且多項目使用只需要添加插件依賴,并且修改制定參數(shù),定制好模板,即可一鍵生成代碼。

  • 因為模板可以根據(jù)項目自定義,基本所有情況下,只需要定義好模板,配置參數(shù),即可開始使用

  • 目前的參數(shù)都算是固定參數(shù),未來可能還將支持一些動態(tài)參數(shù)例如:

  1. 讀取表結(jié)構(gòu)作為參數(shù)

  2. 直接調(diào)用接口, 獲取返回值作為參數(shù)

  3. 直接調(diào)用本地代碼,獲取返回值作為參數(shù)

代碼實現(xiàn)細(xì)節(jié)講解

  • 代碼真的很簡單,目前總共就一個模板渲染的功能,大家可以自行看源碼,不懂的可以提Issue, 有優(yōu)化可以提 Pull Request

上傳至中央倉庫教程

我真是邊寫教程邊上傳,真正的一手實操經(jīng)驗

1. 申請中央倉庫賬號

  • 進(jìn)入 https://issues.sonatype.org

  • 點擊 Sign up 創(chuàng)建賬號

  • 新建一個問題類型為New Project的, 注意Group Id和自己項目pom.xml要一致,如果是自己的域名,需要有域名DNS管理權(quán)限,因為倉庫管理員會要求你添加TXT記錄指向指定地址。如果沒有自己的域名,可以用自己的Github地址,管理員會要求你創(chuàng)建一個指定名稱的倉庫

代碼生成器maven插件源碼怎么編寫

  • 提交申請完成后,管理員就會通知你用戶已經(jīng)可以上傳快照版本或者發(fā)布版本了

代碼生成器maven插件源碼怎么編寫

前期注冊工作就完成了,接下來是上傳流程,接下來流程用到的用戶名密碼使用剛剛創(chuàng)建的用戶名密碼

2. pom.xml 修改和 settings.xml 配置

  • 在本地maven配置 settings.xml 內(nèi)添加自己的賬號密碼(上傳需要), id可以自定義。賬號密碼可以明文輸入,也可以登陸 https://oss.sonatype.org 點擊右上角用戶名進(jìn)入Profile, 然后選擇User Token創(chuàng)建一個加密的 Access User Token , 可以替換 settings.xml 內(nèi)的賬號密碼,這樣可以避免明文保存用戶名密碼

<servers>
    <server>
        <id>sonatype-center</id>
        <username>youRegisterUsername</username>
        <password>youRegisterPassword</password>
    </server>
</servers>
  • pom.xml 內(nèi)添加遠(yuǎn)程發(fā)布倉庫地址,注意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)容自定義,已添加請忽略,可參考 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>

3. 文件簽名 (不簽名無法發(fā)布)

  • 簽名教程

  • windows版本密鑰生成工具下載: https://gpg4win.org/download.html

安裝完成后的名字叫: Kleopatra 打開后,新建一個密鑰對,創(chuàng)建完成后。

注意如果是在IDE等環(huán)境中運行maven,安裝完Kleopatra需要重啟IDE,否則環(huán)境變量未生效,執(zhí)行maven插件的時候,找不到 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>

4. 到中央倉庫發(fā)布

  • 執(zhí)行 mvn clean deploy 上傳到中央倉庫

  • 登陸 https://oss.sonatype.org/ 點擊左側(cè) Staging Repositoryies 菜單,然后下拉到最下面,可以找到你剛剛上傳的包

  • 選中改包點擊 Close

  • Close 完成后,點擊 Release (如果Close失敗, 點擊項目,可以在底部Activity內(nèi)看到失敗原因,根據(jù)原因自行解決)

  • Release 完成后,你的包就進(jìn)入了中央倉庫同步隊列了,同步完成后,其他人就可以直接在 pom.xml 內(nèi)添加你的包依賴了,具體的同步時間,官方給出的是10分鐘內(nèi)會同步到中央倉庫,可以引用依賴。然后2小時內(nèi)同步到搜索引擎,可以在 https://search.maven.org 搜索到。

上述內(nèi)容就是代碼生成器maven插件源碼怎么編寫,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標(biāo)題名稱:代碼生成器maven插件源碼怎么編寫
文章地址:http://bm7419.com/article36/igissg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、云服務(wù)器、外貿(mào)建站、響應(yīng)式網(wǎng)站、靜態(tài)網(wǎng)站、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司