一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Maven Archetype 多 Module 自定義代碼腳手架

 艾小仙 2022-07-13 發(fā)布于上海

大部分公司都會(huì)有一個(gè)通用的模板項(xiàng)目,幫助你快速創(chuàng)建一個(gè)項(xiàng)目。通常,這個(gè)項(xiàng)目需要集成一些公司內(nèi)部的中間件、單元測(cè)試、標(biāo)準(zhǔn)的代碼格式、通用的代碼分層等等。

今天,就利用 Maven 的 Archetype 插件來簡(jiǎn)單實(shí)現(xiàn)這一功能。

通過上面的圖很清楚可以看到,實(shí)際利用這個(gè)插件機(jī)制就簡(jiǎn)單的幾個(gè)步驟:

  1. archetype:create-from-project ,根據(jù)自己的項(xiàng)目代碼生成原型項(xiàng)目
  2. 通過 install 等命令生成原型文件
  3. archetype:generate,通過原型生成目標(biāo)項(xiàng)目

看起來挺簡(jiǎn)單的,但是你會(huì)發(fā)現(xiàn)你用網(wǎng)上搜到的資料來玩的話,你生成的項(xiàng)目特別傻X,包括官方的文檔,我也真是沒搞明白他們?yōu)楹文敲磁1?,一步兩步。。就他媽好了?/p>

一堆問題,比如 module 名稱不會(huì)變、包名變了代碼中沒變,依賴報(bào)錯(cuò)一大堆問題,還是有必要說下中間要怎么做的。

創(chuàng)建Archetype

首先,準(zhǔn)備好我們自己的模板項(xiàng)目,保證代碼都是OK的。

進(jìn)入項(xiàng)目根目錄,執(zhí)行命令:

mvn archetype:create-from-project

然后項(xiàng)目根目錄下會(huì)生成target文件夾,這個(gè)很簡(jiǎn)單,不會(huì)有任何障礙,你看下面的圖,注意看每個(gè)模塊的名字,這是我改過的??!

你生成應(yīng)該會(huì)發(fā)現(xiàn)他不長(zhǎng)這樣,這就是問題啊!接著往下看吧。

這里最核心的部分就在于怎么修改target/generated-sources/src/main/resources/archetype-resources下的文件。

如果不修改直接繼續(xù)的話,最終生成的項(xiàng)目會(huì)發(fā)現(xiàn)module的名稱不會(huì)變,包名也不會(huì)變,代碼里引用的會(huì)有一堆報(bào)錯(cuò)。

接著,我們看看咋改的,這一堆破問題。

修改父pom

首先,找到根目錄的pom文件,會(huì)發(fā)現(xiàn)缺少module信息,這個(gè)必須加上。

 <modules>
  <module>${rootArtifactId}-client</module>
  <module>${rootArtifactId}-common</module>
  <module>${rootArtifactId}-service</module>
  <module>${rootArtifactId}-facade</module>
  <module>${rootArtifactId}-starter</module>
 </modules>

父pom依賴引用的每個(gè)module也要修改,groupId 和 artifactId 按照我給出的方式來改,不要寫死??!

<dependencyManagement>
  <dependencies>
   <dependency>
    <groupId>${groupId}</groupId>
    <artifactId>${rootArtifactId}-client</artifactId>
    <version>${project.version}</version>
   </dependency>
   ... ...
  </dependencies>
 </dependencyManagement>

修改module

這個(gè)就是圖中的問題,默認(rèn)生成的module可能就是模板項(xiàng)目的名字,需要修改成類似__rootArtifactId__-client這種形式,注意是雙下劃線。

然后module中的互相引用 groupId 和 artifactId 按照父 pom 的方式對(duì)應(yīng)修改。

archetype-metadata 修改

找到META-INF/maven/archetype-metadata.xml文件,修改modules相關(guān)的部分,重點(diǎn)注意看 id 、dir、name 的修改方式。

<modules>
    <module id="${rootArtifactId}-client" dir="__rootArtifactId__-client" name="${rootArtifactId}-client">
      <fileSets>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
          <directory>src/main/java</directory>
          <includes>
            <include>**/*.java</include>
          </includes>
        </fileSet>
      </fileSets>
    </module>
    ... ...
</modules>    

修改完成之后,進(jìn)入 target/generated-sources/archetype目錄,執(zhí)行命令:

mvn install

順便執(zhí)行下mvn deploy上傳到nexus。

使用Archetype

經(jīng)過上面的步驟,原型 Archetype 已經(jīng)創(chuàng)建完成,其實(shí)最大的坑也就是上面那部分,花了老半天時(shí)間,簡(jiǎn)直坑爹啊。

下面看看怎么使用吧,兩種使用方式。

命令行

隨便進(jìn)入你想保存項(xiàng)目的路徑,執(zhí)行命令。

mvn archetype:generate -DarchetypeCatalog=local

依次按照提示輸入 groupId、artifactId 即可完成創(chuàng)建。

那怎么給其他人使用?

你的本地maven倉庫目錄(比如~/.m2/repository)有一個(gè)文件archetype-catalog.xml,共享給其他人就行了。

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven./plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven./xsd/archetype-catalog-1.0.0.xsd"
    xmlns="http://maven./plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi="http://www./2001/XMLSchema-instance">

  <archetypes>
    <archetype>
      <groupId>com.example</groupId>
      <artifactId>template-archetype</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <description>Example Project</description>
    </archetype>
  </archetypes>
</archetype-catalog>

IDEA

新建項(xiàng)目,選擇 Maven,勾選 Create from archetype,選擇 Add Archetype...

接著,輸入我們自定義的 Archetype 的 GroupId、ArtifactId、Version 信息。

Add 成功之后就可以在列表中看到我們自己的 archetype,然后按照流程創(chuàng)建即可。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美一区二区三区性视频| 亚洲欧洲在线一区二区三区| 夜夜躁狠狠躁日日躁视频黑人| 在线视频免费看你懂的| 国产亚洲欧美一区二区| 国产精品超碰在线观看| 99少妇偷拍视频在线| 加勒比系列一区二区在线观看| 国产又黄又爽又粗视频在线| 美女露小粉嫩91精品久久久| 熟女体下毛荫荫黑森林自拍| 亚洲三级视频在线观看免费| 亚洲天堂精品在线视频| 国产在线成人免费高清观看av| 日本午夜免费福利视频| 国产av一区二区三区久久不卡| 日韩女优精品一区二区三区| 国产精欧美一区二区三区久久| 日韩欧美高清国内精品| 国产一区欧美一区二区| 久久热中文字幕在线视频| 亚洲欧美日韩在线看片| 久久热九九这里只有精品| 欧美日韩视频中文字幕| 亚洲精品一区二区三区免| 亚洲女同一区二区另类| 国产高清精品福利私拍| 最好看的人妻中文字幕| 午夜精品一区免费视频| 国产成人免费激情视频| 欧美同性视频免费观看| 色无极东京热男人的天堂| 日韩精品一级片免费看| 视频一区二区 国产精品| 国产一区麻豆水好多高潮| 亚洲一区二区三区在线中文字幕| 国产免费人成视频尤物| 国产精品一区二区丝袜| 国产精品一区二区传媒蜜臀| 一区二区三区国产日韩| 亚洲欧美日韩国产综合在线|