在創建 Maven 的項目時我們發現了一個很不方便的問題,就是每次創建 Maven 的工程的時候,都需要選擇一個骨架,但是每個骨架都需要刪除一部分東西才行,這樣的話實在是太不方便了。
為什么要自定義 archetype
在創建 Maven 的項目時我們發現了一個很不方便的問題,就是每次創建 Maven 的工程的時候,都需要選擇一個骨架,但是每個骨架都需要刪除一部分東西才行,在平時開發中,如果是分布式項目,有可能會頻繁創建子項目,每次都要刪除不要的文件然后拷貝我們要的文件,例如彈簧配置,web.xml 中配置等。這樣做不僅會浪費大量時間,拷貝和刪除文件也容易導致錯誤的發生,比如漏拷某文件。
Archetype maven 項目的組成
一個典型的 Archetype Maven 項目主要包括如下幾個部分:
- pom.xml:Archetype 自身的 POM。
- src/main/resources/archetype-resources/pom.xml:基於該 Archetype 生成項目的 POM 原型。
- src/main/resources/META-INF/maven/archetype-metadata.xml:Archetype 的描述符文件。
- src/main/resources/archetype-resources/**:其他需要包含在 Archetype 中的內容。
創建自己的骨架結構
要創建 Maven 的模板,首先你要創建一個 Maven 的項目,然后再以這個項目作為模板。
創建 maven 工程
首先創建一個 Maven 的工程,名字叫 maven-template-java-simple
選擇骨架

骨架創建
在 maven-template-java-simple 根目錄執行
mvn archetype:create-from-project
報錯解決
mvn archetype:create-from-project報錯The specified user settings file does not exist
https://www.cnblogs.com/chmod/p/15489910.html
執行完畢之后,會出現一個編譯之后新的 maven 工程(target 文件夾),如下圖:

骨架安裝
安裝對應骨架項目
先進入骨架項目的 pom 文件目錄:
cd target/generated-sources/archetype
執行安裝:
mvn clean install
我們的骨架項目坐標如下:
<groupId>com.terwergreen</groupId>
<artifactId>maven-template-java-simple-archetype</artifactId>
<version>1.0.0</version>
<packaging>maven-archetype</packaging>
至此,骨架項目安裝成功。
使用自己創建的自定義骨架
創建新的 Maven 工程,選擇自定義骨架
添加骨架
創建新的 maven 工程,選擇 Add Archetype,填寫剛才添加的骨架工程坐標,點擊 OK,這是會生成一個新的骨架選項。
groupId com.terwergreen
artifactId maven-template-java-simple-archetype
version 1.0.0

選中新創建的骨架,點擊下一步創建新的 Maven 的項目如下,這是新建的測試項目:




以后再創建類似的 Maven 的項目時,就可以快速新建的 Maven 項目而不用改來改去了。是不是很方便呢?
PS:刪除自定義 archetype
cd /Users/terwer/Library/Caches/JetBrains/IntelliJIdea2021.3/Maven/Indices
然后編輯 UserArchetypes.xml
文件即可。注意:修改文件之后需要重啟 IDEA。
手動添加的方法:
解決添加失效問題(IDEA2022.1 以下版本有效,不包括 IDEA2022.1)
cd ~/Library/Caches/JetBrains
找到對應版本目錄,例如
cd /Users/terwer/Library/Caches/JetBrains/IntelliJIdea2021.3/Maven/Indices
然后新建一個 UserArchetypes.xml
文件,內容如下:
<archetypes>
<archetype groupId="com.terwergreen" artifactId="maven-template-java-simple-archetype" version="1.0.3" />
</archetypes>
重啟 IDEA 就可以了。
IDEA 2022.1 的變化
IDEA2022 在 Add
完成之后,下次新建需要切換 Catalog 到 Default Local
,然后才能在 Archetype
中選擇到。
IDEA 2022.3 注意事項
IDEA2022.3 需要自己填寫下面的內容:
最新可用源碼
https://github.com/terwer/maven-template-java-simple
2022/03/14 驗證通過
文章更新歷史
2022/03/03 初稿。
2022/04/21 兼容 IDEA 2022.1 。提供使用的新方法。
2023/02/22 兼容 IDEA 2033.3 。