團隊統一技術棧、規範目錄結構、內置公共依賴與配置,新項目「一鍵生成」即可進入業務開發,避免重複複製粘貼、版本不一致、配置遺漏等低級錯誤。
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp 或 IDE 新建 Maven Web 項目artifactId 用複雜唯一名(如 shiro-auth-template),防止後續替換誤傷依賴坐標<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>在種子項目中完成:
mvn archetype:create-from-project # 產物在 target/generated-sources/archetype/
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.team</groupId>
<artifactId>project-archetype</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<distributionManagement>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>https://nexus:8081/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>nexus-releases</id>
<url>https://nexus:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
</project>
cd target/generated-sources/archetype mvn clean deploy # 或 mvn deploy -DskipTests
Preferences → Maven → Archetypes → Add Remote Cataloghttps://nexus:8081/repository/maven-public/archetype-catalog.xmlInclude snapshot archetypesFile → New → Maven Project → 選擇剛添加的 Catalog → 選擇 archetype → 填寫新項目 GAV
| 坑點 | 現象 | 根因 | 解決 |
|---|---|---|---|
| 編碼亂碼 | 生成項目中文註釋/配置全是亂碼 | 種子項目非 UTF-8,或 archetype 元數據未聲明 encoding | 全鏈路強制 UTF-8:源文件、pom.properties、archetype-metadata.xml |
| 誤替換依賴坐標 | 生成項目中第三方依賴的 groupId/artifactId 被替換成新項目名 | archetype 引擎做全局字符串替換,${artifactId} 與依賴坐標衝突 | 種子項目 artifactId 用極低重複概率名(如 team-biz-core),避免常見詞 |
在 src/main/resources/META-INF/maven/archetype-metadata.xml 中配置:
<archetype-descriptor>
<requiredProperties>
<requiredProperty key="database">
<defaultValue>mysql</defaultValue>
</requiredProperty>
</requiredProperties>
<fileSets>
<fileSet filtered="true" packaged="true">
<directory>src/main/java</directory>
<includes><include>**/*.java</include></includes>
<excludes><exclude>**/Test*.java</exclude></excludes>
</fileSet>
<fileSet filtered="false" packaged="false">
<directory>src/main/resources</directory>
</fileSet>
</fileSets>
</archetype-descriptor>
filtered="true":啟用 Velocity 模板變量替換packaged="true":根據新項目 groupId 自動調整包路徑requiredProperties:交互式提示用戶輸入,支持下拉選項mvn clean package 通過)mvn archetype:generate -DarchetypeCatalog=local1.0.0-RELEASE / 1.1.0-SNAPSHOT投入半天構建優質 Archetype,節省每個新項目半天啟動時間,長期收益極高。核心心法:種子項目要乾淨、命名要獨特、編碼要統一、發布要自動化。