当前位置: 首页 > news >正文

maven多模块项目搭建

文章目录

  • 创建方式
    • 创建父项目
    • 创建子模块
  • 目录结构
  • 示例
    • 父模块
    • 模块A
    • 模块B(并在模块B中引入模块A)
  • 注意事项

创建方式

创建父项目

#创建文件夹后,进入目录,执行以下命令
PS D:\demo> mvn archetype:generate
#将输出很多模板,供你选择,输入前面的数字,回车,进行选择
2129: remote -> io.quarkus:quarkus-amazon-lambda-rest-archetype (-)
2130: remote -> io.github.techacademy-curricula:daily-report-system-archetype (An archetype which contains a sample daily_report_system Webapp project.)
2131: remote -> com.bitofcode.archetype:jakartaee-microprofile (Jakarta EE with Eclipse MicroProfile project.)
2132: remote -> org.apache.maven.archetypes:maven-archetype-profiles (-)
#此时输入模板名称maven-archetype-quickstart
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 17: maven-archetype-quickstart
#将会列出名为maven-archetype-quickstart的模板,此处一共有两个
Choose archetype:
1: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
2: remote -> com.github.ywchang:maven-archetype-quickstart (Provide up-to-date java quickstart archetype)
#选择要使用第几个
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 1: 1
#选择使用的版本(该模板具有多个版本),我选择的是1.4版本,所以输入4回车
Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0
2: 1.1
3: 1.3
4: 1.4
Choose a number: 4: 4
#开始下载模板
Downloading: http://rdmaven.test.com:8081/nexus/content/groups/public/org/apache/maven/archetypes/maven-archetype-quickstart/1.4/maven-archetype-quickstart-1.4.pom
Downloaded: http://rdmaven.test.com:8081/nexus/content/groups/public/org/apache/maven/archetypes/maven-archetype-quickstart/1.4/maven-archetype-quickstart-1.4.pom (1.6 kB at 14 kB/s)
Downloading: http://rdmaven.test.com:8081/nexus/content/groups/public/org/apache/maven/archetypes/maven-archetype-bundles/1.4/maven-archetype-bundles-1.4.pom
Downloaded: http://rdmaven.test.com:8081/nexus/content/groups/public/org/apache/maven/archetypes/maven-archetype-bundles/1.4/maven-archetype-bundles-1.4.pom (4.5 kB at 99 kB/s)
Downloading: http://rdmaven.test.com:8081/nexus/content/groups/public/org/apache/maven/archetypes/maven-archetype-quickstart/1.4/maven-archetype-quickstart-1.4.jar
Downloaded: http://rdmaven.test.com:8081/nexus/content/groups/public/org/apache/maven/archetypes/maven-archetype-quickstart/1.4/maven-archetype-quickstart-1.4.jar (7.1 kB at 154 kB/s)
#输入groupId
Define value for property 'groupId': com.demo
#输入artifactId
Define value for property 'artifactId': multiDemo
#输入version,直接回车将使用默认值1.0-SNAPSHOT
Define value for property 'version' 1.0-SNAPSHOT: :
#输入package,直接回车,将使用groupId
Define value for property 'package' com.demo: :
#确认项目配置,回车即可完成创建父项目
Confirm properties configuration:
groupId: com.demo
artifactId: multiDemo
version: 1.0-SNAPSHOT
package: com.demoY: :
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.demo
[INFO] Parameter: artifactId, Value: multiDemo
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.demo
[INFO] Parameter: packageInPathFormat, Value: com/demo
[INFO] Parameter: package, Value: com.demo
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: groupId, Value: com.demo
[INFO] Parameter: artifactId, Value: multiDemo
[INFO] Project created from Archetype in dir: D:\demo\multiModule\multiDemo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:21 min
[INFO] Finished at: 2024-01-22T09:43:36+08:00
[INFO] Final Memory: 16M/202M
[INFO] ------------------------------------------------------------------------
PS D:\demo>

创建子模块

在项目目录里,重复执行以上命令

目录结构

my-project
├── my-module1
│   ├── src
│   │   ├── main
│   │   │   ├── java
│   │   │   ├── resources
│   │   ├── test
│   │   │   ├── java
│   │   │   ├── resources
│   ├── target
│   ├── pom.xml
├── my-module2
│   ├── src
│   │   ├── main
│   │   │   ├── java
│   │   │   ├── resources
│   │   ├── test
│   │   │   ├── java
│   │   │   ├── resources
│   ├── target
│   ├── pom.xml
├── pom.xml

示例

父模块

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ynh</groupId><artifactId>micro</artifactId><version>1.0.0-SNAPSHOT</version><modules><module>micro-admin</module><module>micro-auth</module><module>micro-common</module><module>micro-movie</module><module>micro-star</module><module>micro-user</module></modules><packaging>pom</packaging><properties><java.version>1.8</java.version><springboot.version>2.2.6.RELEASE</springboot.version><spring-cloud.version>Hoxton.SR3</spring-cloud.version><spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version><lombok.version>1.18.10</lombok.version><fastjson.version>1.2.60</fastjson.version><gson.version>2.8.5</gson.version><jackson.version>2.11.4</jackson.version><hutool.version>5.1.1</hutool.version><protostuff.version>1.6.0</protostuff.version><spring.version>5.2.12.RELEASE</spring.version><tomcat.version>9.0.43</tomcat.version><xstream.version>1.4.15</xstream.version><junit.version>4.12</junit.version><commons-lang.version>2.6</commons-lang.version><guava.version>28.1-jre</guava.version><druid.version>1.1.17</druid.version><commons-codec.version>1.13</commons-codec.version><ehcache3.version>3.5.0</ehcache3.version><caffeine.version>2.8.0</caffeine.version><disruptor.version>3.4.2</disruptor.version><antisamy.version>1.5.8</antisamy.version><mybatis-plus.version>3.2.0</mybatis-plus.version><dynamic-datasource.version>2.5.4</dynamic-datasource.version><mybatis-spring-boot-starter.version>2.1.0</mybatis-spring-boot-starter.version><mariadb.version>2.3.0</mariadb.version><pagehelper.version>4.1.1</pagehelper.version><redisson.version>3.11.4</redisson.version><pinyin4j.version>2.5.1</pinyin4j.version><jts.version>1.14</jts.version><servlet.version>2.5</servlet.version><easyexcel.version>2.1.4</easyexcel.version><slf4j.version>1.7.28</slf4j.version><log4j-over-slf4j.version>1.7.25</log4j-over-slf4j.version><log4j.version>1.2.17</log4j.version><cglib.version>3.3.0</cglib.version><jasypt.version>1.16</jasypt.version><mybatis.version>3.5.6</mybatis.version><snakeyaml.version>1.27</snakeyaml.version><poi.version>4.1.2</poi.version><httpclient.version>4.5.13</httpclient.version><redisson.version>3.11.1</redisson.version><rocketmq-common.version>4.8.0</rocketmq-common.version><rocketmq-spring-boot-starter.version>2.1.0</rocketmq-spring-boot-starter.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${springboot.version}</version><type>pom</type><scope>import</scope></dependency><!-- 包含SpringCloud、openFeign等版本信息--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- 包含nacos相关等版本信息--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!--  mybatis/数据库相关 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynamic-datasource.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-spring-boot-starter.version}</version></dependency><dependency><groupId>org.mariadb.jdbc</groupId><artifactId>mariadb-java-client</artifactId><version>${mariadb.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>${pagehelper.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>com.demo.micro</groupId><artifactId>common</artifactId><version>1.0.0-SNAPSHOT</version></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>${redisson.version}</version></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>${rocketmq-common.version}</version></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-common</artifactId><version>${rocketmq-common.version}</version></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>${rocketmq-spring-boot-starter.version}</version></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
</project>

模块A

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>com.ynh</groupId><artifactId>micro</artifactId><version>1.0.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.ynh</groupId><artifactId>micro-common</artifactId><version>${parent.version}</version><name>micro-common</name><packaging>jar</packaging><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><!--    此处不配置,继承父pom的build    --></build>
</project>

模块B(并在模块B中引入模块A)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.ynh</groupId><artifactId>micro</artifactId><version>1.0.0-SNAPSHOT</version></parent><groupId>com.ynh</groupId><artifactId>micro-star</artifactId><version>${parent.version}</version><name>micro-star</name><description>StarManger</description><properties><!--        <java.version>1.8</java.version>--><!--        <mybatis-plus.version>3.2.0</mybatis-plus.version>--><!--        <dynamic-datasource.version>2.5.4</dynamic-datasource.version>--><!--        <mybatis-spring-boot-starter.version>2.1.0</mybatis-spring-boot-starter.version>--><!--        <gson.version>2.8.5</gson.version>--><!--        <jackson.version>2.10.0</jackson.version>--><!--        <argLine>-Dfile.encoding=UTF-8</argLine>--><!--        <spring-cloud.version>Hoxton.SR3</spring-cloud.version>--></properties><dependencies><dependency><groupId>com.ynh</groupId><artifactId>micro-common</artifactId><version>${parent.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.mariadb.jdbc</groupId><artifactId>mariadb-java-client</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-spring-boot-starter.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-typehandlers-jsr310</artifactId><version>1.0.1</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.2.1</version></dependency><!-- json相关  --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>${gson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-oauth2</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jersey</artifactId></dependency></dependencies><build><!--    此处不配置,继承父pom的build    --></build>
</project>

注意事项

1.子文件夹和module名要对应,否则无法正确识别,idea中无法解析为树状
2.子模块会继承父项目的build
3.插件的作用
4.引入其他模块

相关文章:

  • Jenkins构建 Maven项目(微服务)并自动发布
  • Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)
  • ES6中如何使用class和extends关键字实现继承?
  • 基于SpringBoot二手图书管理系统
  • 技术前沿 |【大模型BLIP-2的多模态训练】
  • 从零开始,手把手教你文旅产业策划全攻略
  • 【Java】解决Java报错:ArrayIndexOutOfBoundsException
  • 服务器升级Nacos2.2.3报错、rocksdb报错问题处理
  • PromptPort:为大模型定制的创意AI提示词工具库
  • 【实战JVM】-实战篇-06-GC调优
  • 首途第三十三套清新简约卡片风格蓝紫渐变色短视频模板 | 苹果CMSV10主题
  • 为什么考试总是无法发挥正常水平?
  • AI大模型日报#0610:港大等1bit大模型“解决AI能源需求”、谷歌开源TimesFM时序预测模型
  • 每日复盘-20240607
  • 温度传感器十大品牌
  • Android开源项目规范总结
  • CEF与代理
  • classpath对获取配置文件的影响
  • Codepen 每日精选(2018-3-25)
  • js中的正则表达式入门
  • select2 取值 遍历 设置默认值
  • windows下如何用phpstorm同步测试服务器
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 简单基于spring的redis配置(单机和集群模式)
  • 坑!为什么View.startAnimation不起作用?
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 力扣(LeetCode)357
  • 微服务入门【系列视频课程】
  • 云大使推广中的常见热门问题
  • 在Docker Swarm上部署Apache Storm:第1部分
  • Java数据解析之JSON
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #{}和${}的区别?
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #知识分享#笔记#学习方法
  • (C++17) std算法之执行策略 execution
  • (pojstep1.3.1)1017(构造法模拟)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (南京观海微电子)——I3C协议介绍
  • (三)uboot源码分析
  • (十) 初识 Docker file
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • .apk文件,IIS不支持下载解决
  • .Net Core 生成管理员权限的应用程序
  • .net dataexcel 脚本公式 函数源码
  • .NET Reactor简单使用教程
  • .NET 快速重构概要1
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET上SQLite的连接
  • .net知识和学习方法系列(二十一)CLR-枚举