<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>scaffold on </title>
    <link>/tags/scaffold/</link>
    <description>Recent content in scaffold on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Tue, 21 Apr 2026 10:00:00 +0800</lastBuildDate><atom:link href="/tags/scaffold/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>用 Maven Archetype 管理微服务 Scaffold：为什么我这里暂时没用 Spring Initializr</title>
      <link>/posts/maven-archetype-microservices-scaffold/</link>
      <pubDate>Tue, 21 Apr 2026 10:00:00 +0800</pubDate>
      
      <guid>/posts/maven-archetype-microservices-scaffold/</guid>
      <description>📦 本文基于的完整项目源码：https://github.com/meirongdev/shop
背景 在 Shop Platform 里，每新增一个服务，开发者要做的第一件事不是写业务代码，而是把平台基线搬进去：父 POM 继承、内部 starter 依赖、application.yml 里的 OpenTelemetry / Spring Boot Actuator / 日志格式、Testcontainers 测试基座、K8s deployment / service / HPA 模板……这些内容对每个服务都是一样的。
如果这些样板靠手抄，结果通常有两种：要么漏掉某一项，要么各个服务的写法开始出现细微差异，最终在 code review 和 ArchUnit 检查时才发现，修复成本往往比一开始就收敛要高。
我们需要一种机制：把平台标准前置到生成阶段，而不是等代码写完再回头治理。 Maven Archetype 是解决这个问题的工具。
为什么不用 Spring Initializr Spring Initializr 的定位是&amp;quot;从零开始创建 Spring Boot 项目&amp;quot;。它解决的是：一个开发者刚接触 Spring Boot，需要一个可以直接跑起来的骨架。对于独立项目或者小型 monolith，它工作得很好。
但是在 Shop Platform 这个场景里，它有结构性的局限：
1. 无法感知内部依赖体系
Spring Initializr 生成的 pom.xml 引用的是 Spring 官方依赖坐标。它不知道我们有 shop-common-core、shop-starter-http-client、shop-starter-kafka 这些内部 starter，也不知道父 POM 是 dev.meirong.shop:shop-platform。要把这些全部接入，要么手工改生成结果，要么自己部署一套 Initializr 服务。</description>
    </item>
    
  </channel>
</rss>
