# yudao-module-demo **Repository Path**: sxran/yudao-module-demo ## Basic Information - **Project Name**: yudao-module-demo - **Description**: 将微服务的模块维护在独立的仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: demo - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-20 - **Last Updated**: 2026-01-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # yudao-module-demo 将微服务的模块维护在独立的仓库 ## 背景 不动他的任何代码。 遵循开闭原则。 这里为单独的模块项目,引用jar的方式实现。 可以实现单独的git仓库做不同的业务逻辑。 ## 说明 该项目是一个脚手架 基于jdk-17 ## build依赖 - 先进入 yudao-cloud 项目中 - 然后在 mvn clean install 到本地仓库就行啦。 ## 开发调试 - yudao-server 是单机部署,本地调试的启动方式。 - yudao-module-demo-server 是分布式部署,本地调试的启动方式。 > 建议设置 idea的环境变量为 PROFILES_ACTIVE=my > 确保 application-my.yaml 不会被提交 ## 单机部署说明 - 修改 [ 重要:《Maven 子模块排除 spring-boot-maven-plugin》](https://cloud.iocoder.cn/quick-start/#_8-3-如何打包部署)后重新build - 请把[yudao-server.xml](yudao-server.xml) 文件替换yudao-server的pom - 将后续我们的业务模块打包之后放到 对应的 module 文件夹下面. - 执行`java -cp "yudao-server.jar:module/*" cn.iocoder.yudao.server.YudaoServerApplication` ## 使用 Maven Archetype 生成新项目 ### 1. 打包 Archetype 模块 首次使用前,需要将 archetype 模块打包到本地 Maven 仓库: ```bash cd yudao-module-demo-archetype mvn clean install -DskipTests ``` ### 2. 生成新项目 使用以下命令生成新的模块项目: ```bash mvn archetype:generate \ -DarchetypeGroupId=cn.iocoder.cloud \ -DarchetypeArtifactId=yudao-module-demo-archetype \ -DarchetypeVersion=2025.09-SNAPSHOT \ -DgroupId=cn.iocoder.cloud \ -DartifactId=yudao-module-new \ -Dversion=2025.09-SNAPSHOT \ -DmoduleName=new \ -DmoduleDescription=新模块 \ -DinteractiveMode=false ``` ### 3. 参数说明 - `archetypeGroupId`: Archetype 的 Group ID(固定为 cn.iocoder.cloud) - `archetypeArtifactId`: Archetype 的 Artifact ID(固定为 yudao-module-demo-archetype) - `archetypeVersion`: Archetype 的版本号(固定为 2025.09-SNAPSHOT) - `groupId`: 新项目的 Group ID(通常为 cn.iocoder.cloud) - `artifactId`: 新项目的 Artifact ID(例如:yudao-module-test) - `version`: 新项目的版本号(例如:1.0.0-SNAPSHOT) - `moduleName`: 模块名称(例如:test,用于包名和类名) - `moduleDescription`: 模块描述(例如:测试模块) - `interactiveMode`: 是否使用交互模式(false 表示非交互模式) ### 4. 生成的项目结构 生成的项目包含以下内容: ``` yudao-module-new/ ├── yudao-module-new-api/ # API 模块 │ ├── src/main/java/ │ │ └── cn/iocoder/yudao/module/new/ │ │ ├── api/ │ │ │ ├── ApiConstants.java │ │ │ └── ErrorCodeConstants.java │ └── pom.xml ├── yudao-module-new-server/ # Server 模块 │ ├── src/main/java/ │ │ └── cn/iocoder/yudao/module/new/ │ │ ├── controller/ │ │ │ ├── admin/ │ │ │ │ └── NewTestController.java │ │ │ └── app/ │ │ │ └── AppNewTestController.java │ │ ├── framework/ │ │ │ └── security/ │ │ │ └── config/ │ │ │ └── SecurityConfiguration.java │ │ └── NewServerApplication.java │ ├── src/main/resources/ │ │ ├── application-local.yaml │ │ ├── application.yaml │ │ └── logback-spring.xml │ └── pom.xml └── pom.xml ``` ### 5. 注意事项 - 确保已安装 JDK 17 或更高版本 - 确保已安装 Maven 3.6 或更高版本 - 首次使用前必须先执行 `mvn clean install` 打包 archetype 模块 - 如果修改了 archetype 模板的模板文件,需要重新打包 - 生成的项目会自动处理目录名、包名和类名的替换 ## 更新 Archetype 模板 ### 1. 添加新文件到模板 Archetype 模板的文件位于 `yudao-module-demo-archetype/src/main/resources/archetype-resources/` 目录下。 #### 目录结构 ``` yudao-module-demo-archetype/src/main/resources/archetype-resources/ ├── ${artifactId}-api/ # API 模块模板 │ ├── src/ │ │ └── main/ │ │ └── java/ │ │ └── cn/iocoder/yudao/module/${moduleName}/ │ │ └── api/ │ │ ├── ApiConstants.java │ │ └── ErrorCodeConstants.java │ └── pom.xml ├── ${artifactId}-server/ # Server 模块模板 │ ├── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cn/iocoder/yudao/module/${moduleName}/ │ │ │ ├── controller/ │ │ │ │ ├── admin/ │ │ │ │ │ └── ${capitalizedModuleName}TestController.java │ │ │ │ └── app/ │ │ │ │ └── App${capitalizedModuleName}TestController.java │ │ │ ├── framework/ │ │ │ │ └── security/ │ │ │ │ └── config/ │ │ │ │ └── SecurityConfiguration.java │ │ │ └── ${artifactId}ServerApplication.java │ │ └── resources/ │ │ ├── application-local.yaml │ │ ├── application.yaml │ │ └── logback-spring.xml │ └── pom.xml ├── .gitignore # 根目录文件 ├── pom.xml # 根目录 POM └── README.md # 根目录 README ``` #### 添加 .gitignore 文件示例 1. 在 `archetype-resources/` 目录下创建 `.gitignore` 文件: ```bash cd yudao-module-demo-archetype/src/main/resources/archetype-resources touch .gitignore ``` 2. 编辑 `.gitignore` 文件内容: ```gitignore # Maven target/ pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties .mvn/wrapper/maven-wrapper.jar # IDE .idea/ *.iml *.iws *.ipr .vscode/ .settings/ .classpath .project # OS .DS_Store Thumbs.db # Logs *.log logs/ # Application application-local.yaml ``` ### 2. 更新 archetype-metadata.xml 在 `yudao-module-demo-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml` 中添加新文件的配置。 #### 添加根目录文件 如果要在生成的项目根目录添加 `.gitignore` 文件,需要在 `archetype-metadata.xml` 中配置: ```xml . pom.xml README.md .gitignore ``` **注意**: - `filtered="false"` 表示不对文件内容进行变量替换(适用于 .gitignore 等不需要替换的文件) - `filtered="true"` 表示会对文件内容进行变量替换(适用于需要替换 ${moduleName} 等变量的文件) #### 添加 Java 文件 如果要添加新的 Java 文件,需要配置对应的文件集: ```xml ${artifactId}-api/src/main/java **/*.java ${artifactId}-server/src/main/java **/*.java ``` #### 添加资源文件 如果要添加资源文件(如配置文件),需要配置对应的文件集: ```xml ${artifactId}-server/src/main/resources **/* ``` ### 3. 更新 post-generate 脚本(可选) 如果添加的文件需要特殊的处理逻辑(如重命名、内容替换等),需要在 `archetype-post-generate.groovy` 脚本中添加相应的处理代码。 脚本位置:`yudao-module-demo-archetype/src/main/resources/META-INF/archetype-post-generate.groovy` #### 常见处理场景 1. **处理 Java 文件的包名和类名**:脚本会自动处理 2. **处理目录名变量替换**:脚本会自动处理 `${artifactId}` 等变量 3. **处理文件名变量替换**:脚本会自动处理 `${capitalizedModuleName}` 等变量 如果不需要特殊处理,则无需修改脚本。 ### 4. 重新打包 Archetype 修改完模板文件后,需要重新打包到本地 Maven 仓库: ```bash cd yudao-module-demo-archetype mvn clean install -DskipTests ``` ### 5. 测试新模板 重新打包后,可以使用 `mvn archetype:generate` 命令测试新添加的文件是否正确生成: ```bash mvn archetype:generate \ -DarchetypeGroupId=cn.iocoder.cloud \ -DarchetypeArtifactId=yudao-module-demo-archetype \ -DarchetypeVersion=2025.09-SNAPSHOT \ -DgroupId=cn.iocoder.cloud \ -DartifactId=yudao-module-test \ -Dversion=1.0.0-SNAPSHOT \ -DmoduleName=test \ -DmoduleDescription=测试模块 \ -DinteractiveMode=false ``` ### 6. 可用变量说明 在模板文件中,可以使用以下变量: - `${artifactId}`: 项目 Artifact ID(如 yudao-module-test) - `${groupId}`: 项目 Group ID(如 cn.iocoder.cloud) - `${version}`: 项目版本号(如 1.0.0-SNAPSHOT) - `${moduleName}`: 模块名称(如 test) - `${moduleDescription}`: 模块描述 - `${capitalizedModuleName}`: 首字母大写的模块名(如 Test) - `${package}`: 包名(默认为 groupId) ### 7. 更新流程总结 1. 在 `archetype-resources/` 目录下添加新文件 2. 在 `archetype-metadata.xml` 中配置新文件的文件集 3. 如需要,在 `archetype-post-generate.groovy` 中添加处理逻辑 4. 执行 `mvn clean install -DskipTests` 重新打包 5. 使用 `mvn archetype:generate` 测试生成的新项目 ## 出自于 https://github.com/MaskWolf/yudao-module-demo.git