Maven创建父子工程详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 在微服务盛行的当下,我们创建的工程基本都是父子工程,我们通过父工程来引入jar,定义统一的版本号等,这样我们在子工程中就可以直接引用后使用了,而不需要去重复的声明版本号等,这样会更方便对整个项目的jar包实现统一化管理,让项目的层次更加清晰。

前言:

在微服务盛行的当下,我们创建的工程基本都是父子工程,我们通过父工程来引入jar,定义统一的版本号等,这样我们在子工程中就可以直接引用后使用了,而不需要去重复的声明版本号等,这样会更方便对整个项目的jar包实现统一化管理,让项目的层次更加清晰。通常我们在创建一个微服务架构时都是一个父工程,然后里面有api的子工程,common的公共组件子工程,pojo的实体类工程、service服务工程等等,他们各司其职共同构建出了一个完整的分布式服务,废话不多说,实际操作下这个父子工程到底该怎么创建。


一、创建父子工程



1.创建父工程


第一步:file–>new–>project–>maven
父工程仅仅是一个普通的maven工程就行,我们直接创建普通的maven工程,不引入任何jar包,这里直接下一步

792b003af17f42f4819d14a358f48682.png


第二步:输入groupid和artifactid,这里没什么讲究,起名看自己心情,然后继续下一步

957717261ebf4d25b1eb1756ccdff94c.png


第三步:到这里普通的maven工程就建好了,删除src(父工程用不到)

image.png


第四步:配置pom.xml


我们使用properties来进行版本号的统一管理,使用dependencyManagement来管理依赖,声明父工程的打包方式为pom,具体操作如下:

<?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.cheng</groupId>
    <artifactId>mybatis-father</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <mybatis-version>3.5.6</mybatis-version>
        <mysql-connector-version>5.1.38</mysql-connector-version>
        <junit-version>4.13</junit-version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis-version}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-connector-version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit-version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>


这里需要注意,父工程的依赖可以直接放在dependencies中,也可以在最外面包一层dependencyManagement,但是若是想要可以在子工程中依赖直接指向父工程,就需要使用dependencyManagement来管理依赖,不然子工程中的依赖的版本号还需要再次重复声明。此外父工程的打包方式应该是pom,不是jar,这里需要手动使用packaging来声明。


2.创建子工程


1)第一步:创建module子工程


这一步可以选择使用spring-initializr来创建子工程,也可以选择maven直接创建,选择spring-initializr我们可以选择需要的依赖,这样无需手动导入,选择maven创建我们之后还需要手动导入jar,这里是为了展示父子工程的依赖的关系,我们使用maven选项创建。如下图:

6d9b322b8dc14d4da109f06eadff19e7.png


2)声明artifactid

这里我们是不需要来声明groupid的,因为是子工程,所以这个值是固定的,我们可以自定义artifactid,如下图所示,这里完了之后就next-finsh就可以了。

42946d62ccc743d9bda9b17d004ee3cc.png


3)展示子工程

下面就是我们刚刚创建的子工程了。

image.png


4)配置子工程的pom.xml

首先我们需要为不同的子工程引入不同的jar包,当然这里只展示了一个子工程,我们在当前子工程中引入父工程中的jar包,如下图,

我们在子工程中是不需要声明版本号的,为什么呢?可以看到引入依赖位置的左面有个紫色的向上箭头,点下就会发现跳到了父工程中,这就是为什么我们不需要声明版本号的原因,因为当前的jar包引用指向了父工程,他们共用版本号,当然共用版本号子工程该导入jar包还是需要导入jar包的。


image.png


二、需要注意的点


到这里所有的操作就完了,其实发现创建一个父子工程还是很容易的,万事万物都是会了不难,难了不会的。不过这其中有几个点需要注意下,笔者列出来,我们共勉。

1.父工程的pom.xml文件的打包方式应该为pom
2.想要子工程的依赖指向父工程的话,父工程的依赖应该使用dependencyManagement来管理。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
59 0
|
4月前
|
Java Maven
maven 工程pom依赖优化及常用命令
maven 工程pom依赖优化及常用命令
55 0
|
6月前
|
缓存 Java 关系型数据库
【超全详解】Maven工程配置与常见问题解决指南
检查Maven配置包括验证路径、设置pom.xml与Project Structure的Java版本。基本操作有`clean-compile`、`install`和`package`,其中`install`会将jar包放入本地仓库。获取他人工程后需修改配置、清除缓存、更新依赖等。配置文件应从Maven Repository找寻,选择稳定高版本。创建Maven工程可选archetype如`quickstart`或直接创建Java工程。基本目录结构遵循分层设计原则,常见问题包括假性导包、端口占用、时区问题等,对应解决方案包括删除本地仓库文件、调整系统设置或重新加载项目。
871 6
【超全详解】Maven工程配置与常见问题解决指南
|
5月前
|
SpringCloudAlibaba Java Maven
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
|
5月前
|
Java 应用服务中间件 API
eclipse创建 maven-web工程
eclipse创建 maven-web工程
|
6月前
|
IDE Java 数据库连接
maven篇2:手动创建maven工程
maven篇2:手动创建maven工程
maven篇2:手动创建maven工程
|
6月前
|
Java Maven
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
56 0
|
6月前
|
Java 应用服务中间件 Maven
【Maven从入门到如土】创建 Maven 版的 Web 工程
【Maven从入门到如土】创建 Maven 版的 Web 工程
85 0
|
6月前
|
Java Maven
【Maven从入门到如土】如何在Maven工程中编写代码并执行构建
【Maven从入门到如土】如何在Maven工程中编写代码并执行构建
70 0