<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>scaffolding on </title>
    <link>/tags/scaffolding/</link>
    <description>Recent content in scaffolding on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Tue, 21 Apr 2026 10:00:00 +0800</lastBuildDate><atom:link href="/tags/scaffolding/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>从现有项目抽象出 Maven Archetype</title>
      <link>/posts/maven-archetype-from-existing-project/</link>
      <pubDate>Tue, 21 Apr 2026 10:00:00 +0800</pubDate>
      
      <guid>/posts/maven-archetype-from-existing-project/</guid>
      <description>背景 一个团队维护多个 Spring Boot 服务时，常见的痛点是：
每个新服务都要从头抄一遍 pom.xml、application.yaml、logback-spring.xml、Dockerfile、Makefile…… 抄着抄着就出现&amp;quot;A 服务用了新的 actuator 配置，B 服务还是旧的&amp;quot;这种偏差。 Onboarding 新成员时，&amp;ldquo;我要建个新服务&amp;quot;变成一个需要问老人、翻三个仓库的事情。 一个比较务实的解决方式：从现有的成熟项目里，抽象出 Maven Archetype。以后建新服务直接：
mvn archetype:generate \ -DarchetypeGroupId=com.example \ -DarchetypeArtifactId=my-service-archetype \ -DarchetypeVersion=1.0.0 \ -DgroupId=com.example \ -DartifactId=order-service \ -Dversion=0.0.1-SNAPSHOT 一条命令生出一个带完整脚手架的新项目。
本文记录从零做一个 Archetype 的完整流程，包括最容易踩坑的 Velocity 转义。
两种制作方式 方式一：archetype:create-from-project Maven 官方提供了自动生成脚本：
cd my-reference-project mvn archetype:create-from-project 它会在 target/generated-sources/archetype/ 下生成一个 archetype 项目骨架。
适合场景：现有项目结构很干净、大部分文件都能直接复用。
缺点：
会把业务代码一并塞进 archetype-resources/，还得手动挑。 所有 ${...} 都会被机械地替换，不区分是&amp;quot;用户可配置的变量&amp;quot;还是&amp;quot;Spring 运行时占位符&amp;rdquo;。 生成后还是要大改一轮，不如一开始就手写。 方式二：手工制作 自己按约定的目录结构搭一个 archetype 项目，把模板文件逐个放进去。
适合场景：需要抽象多个现有项目的共同部分，或者想要一次做多个不同形态的 archetype（比如 gateway、BFF、domain service 各一个）。
下文以手工制作为主。
Archetype 项目结构 一个最小可用的 archetype 项目长这样：</description>
    </item>
    
  </channel>
</rss>
