中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

代碼生成器maven插件源碼怎么編寫(xiě)

本篇文章為大家展示了代碼生成器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ě)一個(gè)代碼生成器

在寫(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ī)律的,那么代碼生成器可能不太適合你

代碼生成器的級(jí)別

  1. 復(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)容成正比。

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

  2. 自定義代碼生成器
    因?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ù)。

自定義代碼生成器maven插件

代碼生成器的原理,大體就是根據(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ù)例如:

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

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

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

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

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

上傳至中央倉(cāng)庫(kù)教程

我真是邊寫(xiě)教程邊上傳,真正的一手實(shí)操經(jīng)驗(yàn)

1. 申請(qǐng)中央倉(cāng)庫(kù)賬號(hào)

  • 進(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ù)

代碼生成器maven插件源碼怎么編寫(xiě)

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

代碼生成器maven插件源碼怎么編寫(xiě)

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

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

  • 在本地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>

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

  • 簽名教程

  • 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>

4. 到中央倉(cāng)庫(kù)發(fā)布

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

成都網(wǎng)頁(yè)設(shè)計(jì)公司
郯城县| 双江| 平南县| 太谷县| 宣化县| 桂平市| 黄冈市| 宜章县| 寻乌县| 南陵县| 新田县| 云和县| 积石山| 凤凰县| 林周县| 会昌县| 涪陵区| 台安县| 肥乡县| 南木林县| 乌鲁木齐县| 宁河县| 班玛县| 忻城县| 大新县| 青州市| 和硕县| 焦作市| 平顶山市| 红河县| 清原| 电白县| 于田县| 金阳县| 巴彦县| 谢通门县| 房产| 玉树县| 赤水市| 北海市| 五大连池市|