maven中自定義MavenArchetype的實現(xiàn)
Maven自身提供了許多Archetype來方便用戶創(chuàng)建Project,但是每個團(tuán)隊都可能會有一些常用的文件或配置,為了避免在創(chuàng)建project時重復(fù)的拷貝和修改,我們通過自定義Archetype來規(guī)范顯得還蠻有必要,下面簡單介紹下使用maven-archetype-archetype來構(gòu)建自己的Archetype的過程。
1、創(chuàng)建項目
示例
mvn archetype:generate \ -DgroupId=com.zn.opit.template \ -DartifactId=zn-springboot-template \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DinteractiveMode=false
- groupId: 項目的包名,通常是公司或組織的反向域名。
- artifactId: 項目的名稱,代表項目在 Maven 中的標(biāo)識。
- archetypeArtifactId: 我們使用 maven-archetype-quickstart 來創(chuàng)建一個簡單的 Maven 項目。
創(chuàng)建完成后,你將有一個基本的 Maven 項目目錄結(jié)構(gòu)。
2、編寫你的項目結(jié)構(gòu)和代碼
將Java文件和目錄保持你項目的標(biāo)準(zhǔn)結(jié)構(gòu)。這樣,你已經(jīng)完成了原型項目的編寫。
3、轉(zhuǎn)換為 Maven Archetype
現(xiàn)在你需要將該項目轉(zhuǎn)換為 Maven Archetype。首先,你需要確保項目編譯無誤:
mvn clean install
之后,使用以下命令將現(xiàn)有項目打包為 Archetype:
mvn archetype:create-from-project
此命令將項目轉(zhuǎn)換為 Archetype,并在 target/generated-sources/archetype 目錄中生成 Archetype 的源碼。
4、安裝 Archetype 到本地倉庫
將生成的 Archetype 安裝到本地倉庫中:
cd target/generated-sources/archetype mvn clean install
這將把 Archetype 安裝到你的本地 Maven 倉庫,通常位于 ~/.m2/repository。
5、使用生成的 Archetype 創(chuàng)建新項目
現(xiàn)在,你已經(jīng)有了一個本地安裝的 Archetype,可以使用它來生成新項目。
首先,列出本地可用的 Archetype:
mvn archetype:generate
在這個列表中,查找你剛剛創(chuàng)建的 chaos-template。你應(yīng)該能夠找到它。
6、確認(rèn)生成的項目是否正確
- 打開你生成的新項目,檢查文件結(jié)構(gòu)是否和你原始項目一致。
- 運行項目,確認(rèn)代碼沒有問題。
7、在 IDE 中使用本地 Archetype
在 New Project 中,你應(yīng)該能夠選擇 “Maven Archetype”,并在本地 Archetype 列表中看到 zn-springboot-tpl。
詳細(xì)說明:
- Archetype 是什么: Maven Archetype 是一個項目模板,可以用來快速生成帶有特定結(jié)構(gòu)和內(nèi)容的項目。我們將上述代碼作為模板,以便可以反復(fù)使用。
- ${package} 的作用: 在 Archetype 中,你可以使用 ${package} 這種變量,它會在生成項目時自動替換為實際的包名。這讓 Archetype 更加靈活。
- 安裝到本地倉庫的目的是: 通過將 Archetype 安裝到本地倉庫,你可以在沒有遠(yuǎn)程倉庫的情況下,通過 IDE 或 Maven 使用本地模板來生成項目。
通過這些步驟,你將成功構(gòu)建一個 Maven Archetype,并使用它來生成基于你代碼模板的新項目。
FAQ
?org.apache.maven.archetype.source.ArchetypeDataSourceException: org.eclipse.aether.transfer.MetadataNotFoundException: Failure to find /archetype-catalog.xml in http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates are forced
這個錯誤是由于 Maven 在嘗試從遠(yuǎn)程倉庫中下載 Archetype catalog 時失敗,尤其是在訪問阿里云的 Maven 倉庫時,無法找到 archetype-catalog.xml 文件。它最終會回退到使用本地或內(nèi)部的 Archetype catalog。
你可以通過以下幾種方式解決這個問題:
檢查你的 Maven 的 settings.xml 配置文件,確保配置的遠(yuǎn)程倉庫可用。你可以在 ~/.m2/settings.xml 中配置阿里云的鏡像,但如果它不可用,可能需要更新或切換到其他可用的公共倉庫。
在 settings.xml 中,檢查是否有類似的配置:
<mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
嘗試將這個 mirror 替換為更穩(wěn)定的倉庫,比如 Maven Central:
<mirrors> <mirror> <id>maven-default-mirror</id> <mirrorOf>central</mirrorOf> <name>Maven Central</name> <url>https://repo.maven.apache.org/maven2/</url> </mirror> </mirrors>
保存并重試命令。
- 強制更新倉庫
由于該錯誤提到緩存可能導(dǎo)致不能自動重新下載文件,你可以使用 -U 選項來強制更新 Maven 倉庫中的緩存:
mvn archetype:generate -U
- 手動下載 Archetype catalog
如果遠(yuǎn)程倉庫的問題持續(xù),另一種解決辦法是手動下載 archetype-catalog.xml 文件并將其放入本地倉庫。你可以從其他 Maven 倉庫或官方網(wǎng)站找到這個文件,然后放置在本地倉庫合適的位置。
- 使用本地 Archetype
由于你已經(jīng)創(chuàng)建并安裝了 Archetype 在本地倉庫,可以通過以下命令使用本地的 Archetype 來生成項目:
mvn archetype:generate \ -DarchetypeCatalog=local \ -DarchetypeGroupId=com.zn.opit.chaos \ -DarchetypeArtifactId=chaos-template \ -DarchetypeVersion=1.0-SNAPSHOT \ -DgroupId=com.example \ -DartifactId=my-new-project
不用上述命令,此時已經(jīng)可以執(zhí)行install命令成功。
?在idea的New Project頁面選擇Archetype時并沒有自己制作的那個
mvn clean install # 生成本地 archetype-catalog.xml # 當(dāng)你在本地創(chuàng)建了 Archetype 后,Maven 需要生成一個 archetype-catalog.xml 文件,以便 IDE 能夠識別本地的 Archetype。 # 使用以下命令生成本地的 Archetype 目錄: mvn archetype:crawl # 該命令會在 ~/.m2/repository 目錄下生成一個 archetype-catalog.xml 文件,該文件會包含所有本地安裝的 Archetype 信息。 # 你可以在命令行中檢查是否生成了此文件,通常路徑是: ~/.m2/repository/archetype-catalog.xml
此時還沒有,可以在 New Project → Catalog → Manage catalogs → 新增一個路徑(name自定義、type是Local、location選擇archetype-catalog.xml的路徑,例如: /Users/zhinian/.m2/repository/archetype-catalog.xml)
。此時New Project,Catalog選擇zhinian-tpl,下方已經(jīng)有可選項了
到此這篇關(guān)于maven中自定義MavenArchetype的實現(xiàn)的文章就介紹到這了,更多相關(guān)自定義MavenArchetype內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot集成P6spy實現(xiàn)自定義SQL日志打印
本文主要介紹了SpringBoot集成P6spy實現(xiàn)自定義SQL日志打印,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07SpringSecurity配置HTTPS的實現(xiàn)
本文介紹了SpringBoot項目中配置HTTPS并集成SpringSecurity,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01Java反射 PropertyDescriptor類案例詳解
這篇文章主要介紹了Java反射 PropertyDescriptor類案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08springboot themaleaf 第一次進(jìn)頁面不加載css的問題
這篇文章主要介紹了springboot themaleaf 第一次進(jìn)頁面不加載css的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10