乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

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

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

      通過上面的圖很清楚可以看到,實際利用這個插件機制就簡單的幾個步驟:

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

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

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

      創(chuàng)建Archetype

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

      進入項目根目錄,執(zhí)行命令:

      mvn archetype:create-from-project

      然后項目根目錄下會生成target文件夾,這個很簡單,不會有任何障礙,你看下面的圖,注意看每個模塊的名字,這是我改過的??!

      你生成應(yīng)該會發(fā)現(xiàn)他不長這樣,這就是問題?。〗又驴窗?。

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

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

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

      修改父pom

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

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

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

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

      修改module

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

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

      archetype-metadata 修改

      找到META-INF/maven/archetype-metadata.xml文件,修改modules相關(guā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>    

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

      mvn install

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

      使用Archetype

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

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

      命令行

      隨便進入你想保存項目的路徑,執(zhí)行命令。

      mvn archetype:generate -DarchetypeCatalog=local

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

      那怎么給其他人使用?

      你的本地maven倉庫目錄(比如~/.m2/repository)有一個文件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

      新建項目,選擇 Maven,勾選 Create from archetype,選擇 Add Archetype...

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多