DDD:根据maven的脚手架archetype生成ddd多模块项目目录结构

2024-05-04 22:28

本文主要是介绍DDD:根据maven的脚手架archetype生成ddd多模块项目目录结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着领域驱动的兴起,很多人都想学习如何进行ddd的项目开发,那ddd的项目结构是怎么样的?又是如何结合SpringBoot呢?那么针对这个问题,笔者使用maven的archetype封装一个相对通用的ddd的项目目录,方便一键生成DDD项目目录。

项目地址在文末

archetype项目

archetype项目各种依赖版本要求

1、JDK-17
2、maven-3.9.6
3、idea-2024.1
4、git-2.44.0

archetype项目结构

万金油archetype项目目录结构

archetype-metadata.xml内容

<?xml version="1.0" encoding="UTF-8" ?>
<archetype-descriptorxsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"name="archetype-multi-module"><requiredProperties><requiredProperty key="groupId"><defaultValue>gold.muxi</defaultValue></requiredProperty><requiredProperty key="artifactId"><defaultValue>wanjinyou</defaultValue></requiredProperty><requiredProperty key="version"><defaultValue>1.0.0-SNAPSHOT</defaultValue></requiredProperty><requiredProperty key="package"><defaultValue>gold.muxi.wanjinyou</defaultValue></requiredProperty><requiredProperty key="startClassName"><defaultValue>StartApplication</defaultValue></requiredProperty><requiredProperty key="springbootVersion"><defaultValue>3.2.5</defaultValue></requiredProperty></requiredProperties><modules><module id="${rootArtifactId}-start" name="${rootArtifactId}-start" dir="__rootArtifactId__-start"><fileSets><fileSet filtered="true" encoding="UTF-8" packaged="true"><directory>src/main/java</directory><includes><include>**/*.*</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8" packaged="false"><directory>src/main/resources</directory><includes><include>**/*.*</include></includes></fileSet></fileSets></module><module id="${rootArtifactId}-application" name="${rootArtifactId}-application" dir="__rootArtifactId__-application"><fileSets><fileSet filtered="true" encoding="UTF-8" packaged="true"><directory>src/main/java</directory><includes><include>**/*.*</include></includes></fileSet></fileSets></module><module id="${rootArtifactId}-common" name="${rootArtifactId}-common" dir="__rootArtifactId__-common"><fileSets><fileSet filtered="true" encoding="UTF-8" packaged="true"><directory>src/main/java</directory><includes><include>**/*.*</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8" packaged="false"><directory>src/main/resources</directory><includes><include>**/*.*</include></includes></fileSet></fileSets></module><module id="${rootArtifactId}-interfaces" name="${rootArtifactId}-interfaces" dir="__rootArtifactId__-interfaces"><fileSets><fileSet filtered="true" encoding="UTF-8" packaged="true"><directory>src/main/java</directory><includes><include>**/*.*</include></includes></fileSet></fileSets></module><module id="${rootArtifactId}-infrastructure" name="${rootArtifactId}-infrastructure" dir="__rootArtifactId__-infrastructure"><fileSets><fileSet filtered="true" encoding="UTF-8" packaged="true"><directory>src/main/java</directory><includes><include>**/*.*</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8" packaged="false"><directory>src/main/resources</directory><includes><include>**/*.*</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8" packaged="true"><directory>src/test/java</directory><includes><include>**/*.*</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8" packaged="false"><directory>src/test/resources</directory><includes><include>**/*.*</include></includes></fileSet></fileSets></module><module id="${rootArtifactId}-domain" name="${rootArtifactId}-domain" dir="__rootArtifactId__-domain"><fileSets><fileSet filtered="true" encoding="UTF-8" packaged="true"><directory>src/main/java</directory><includes><include>**/*.*</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8" packaged="true"><directory>src/test/java</directory><includes><include>**/*.*</include></includes></fileSet></fileSets></module></modules>
</archetype-descriptor>

requiredProperties 解析

groupId:表示根据这个archetype生成的项目的 的值,如不传递这个值,默认值是:gold.muxi
artifactId:表示根据这个archetype生成的项目的的值,如不传递这个值,默认值是:wanjinyou
version:表示根据这个archetype生成的项目的的值,如不传递这个值,默认值是:1.0.0-SNAPSHOT
package:表示根据这个archetype生成的项目的包名的值,如不传递这个值,默认值是:gold.muxi.wanjinyou
startClassName:表示根据这个archetype生成的项目的启动类的类名,如不传递这个值,默认值是:startClassName
springbootVersion:表示根据这个archetype生成的项目的项目的springboot版本,如不传递这个值,默认值是:3.2.5

archetype项目使用说明

# 克隆本项目代码到本地
git clone https://gitee.com/Sanliren/wanjinyou-archetype.git
# 进入项目目录
cd wanjinyou-archetype
# 安装脚手架项目到本地maven仓库
mvn clean install
# 根据脚手架生成项目
mvn archetype:generate -B -DarchetypeGroupId=gold.muxi -DarchetypeArtifactId=wangjinyou-archetype -DarchetypeVersion=1.0 -DgroupId=com.wanliangjin -DartifactId=demo -Dversion=1.0.0-SNAPSHOT -Dpackage=com.wanliangjin.demo -X -DarchetypeCatalog=local

mvn archetype:generate 命令解析

-B:表示不用在命令执行过程中交互输入
-DarchetypeGroupId=gold.muxi :指定脚手架的 groupId ,不用修改
-DarchetypeArtifactId=wangjinyou-archetype :指定脚手架的 artifactId ,不用修改
-DarchetypeVersion=1.0-SNAPSHOT # 指定脚手架的版本,不用修改
-DgroupId=com.wanliangjin :新项目的 groupId,根据自己的进行修改
-DartifactId=demo :新项目的 artifactId ,根据自己的进行修改
-Dversion=1.0.0-SNAPSHOT :新项目的 version , 根据自己的进行修改
-Dpackage=com.wanliangjin.demo :新项目的包名,根据自己的进行修改
-X -DarchetypeCatalog=local :指定从本地获取该脚手架的位置

生成的项目demo目录结构

生成的项目demo目录结构

总结

至此,根据maven的脚手架archetype生成多模块的ddd项目目录结构就完成了,以后再需要生成新项目的时候就可以直接用命令生成,不需要重新又搭建一遍目录;而且在微服务下,多个微服务也可以都根据这个脚手架生成每个服务,就不用那么麻烦了。(^-^

脚手架项目地址

https://gitee.com/Sanliren/wanjinyou-archetype记得 start ( •̀ ω •́ )✧

这篇关于DDD:根据maven的脚手架archetype生成ddd多模块项目目录结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960221

相关文章

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子