Maven子父工程依赖配置,小白也能看得懂

1.Maven子父工程依赖配置

你还在对Maven子父工程依赖配置感到疑惑吗?看了这篇文章你讲对它们有个新的认知,小白也能看得懂

在阅读本文之前你要已经了解并使用过maven来管理项目的jar包

直接开干。(下面说的子模块和子工程是同一个意思)

2.环境/版本一览:

  • 开发工具:Intellij IDEA 2020.2.3
  • jdk:1.8.0_211
  • maven: 3.6.3

3.创建父工程

  • 新建maven项目 这里不要勾选maven模版

  • 设置项目信息

  • 修改父工程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.abc</groupId><artifactId>project</artifactId><version>1.0-SNAPSHOT</version><!--  packaging的默认打包类型是jar所有的父工程打包方式都需要设置成pom--><packaging>pom</packaging><!--      当前是父工程--><!--依赖配置:目前这里的配置的依赖所引入的jar包在此工程下的所有子工程都会被引入--><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency></dependencies><!--依赖管理:这里的配置的依赖只是对依赖版本的管理配置,子工程并不会直接引入如果子工程要需要引入只需要加入如下标签:<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>这样就可以引入mysql的驱动了,这样的好处就是可以在父工程统一一下整个工程的jar包依赖版本而且如果有的工程不需要一些jar就可以不进行引入--><dependencyManagement><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency></dependencies></dependencyManagement></project>

父工程的src不含有任何业务逻辑,我们直接将其删除

父工程建好了 依赖也配置好了,接下来我们创建几个子工程

4.创建子工程

  • 创建project-common

我们在开发中经常有些公共的工具类,现在可以创建一个子工程叫project-common 把这些类都放进去

子工程完毕后我们回到父工程的pom.xml  可以发现idea帮我们加入了如下配置。<modules>标签是配置该工程下的子模块名

检查一下project-common工程的pom.xml有没有如下标签 (因为有的idea不会自动加入这个)

  <parent><artifactId>project</artifactId><groupId>com.abc</groupId><version>1.0-SNAPSHOT</version></parent>

在这个位置。这是在子模块中配置父工程的信息

  • 查看依赖

可以看到子工程并没有引入 父工程<dependencyManagement>里的依赖,只是引入了父工程<dependencies>的依赖

在子工程试一下看能不能使用fastjson包里的内容

可以正常使用

接下来我们在project-common工程里引入一下父工程<dependencyManagement>里的包

  • 引入父工程<dependencyManagement>里的包

在project-common工程的pom.xml中的<dependencies>里加入如下配置

        <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

如果我子工程不想使用父类设置的版本呢

  • 重写父工程依赖的版本

还是按照刚才的方式修改一下版本

<version>8.0.22</version>

可以看到子模块的依赖版本被更改了

到此为止子父工程的依赖基本使用就说完了

在实际开发中都是一个父工程有许多子工程,那么一个子工程该如何使用另一个工程的类呢

5.子模块之间引用依赖

  • 先在project-common创建一个类 MyStringUtils
package com.abc;/*** @description: s* @author: nxq email: niuxiangqian163@163.com* @createDate: 2020/12/17 3:15 下午* @updateUser: nxq email: niuxiangqian163@163.com* @updateDate: 2020/12/17 3:15 下午* @updateRemark:* @version: 1.0**/
public class MyStringUtils {/*** 判断字符串是否为空* @author nxq* @param obj:* @return boolean*/public static boolean isEmpty(String obj){return null == obj || "".equals(obj);}
}
  • 再创建一个子工程叫 project-auth

创建成功是这样

可以在 project的pom.xml看到新增了如下配置

接下来在project-auth的pom.xml加入如下配置

  <parent><artifactId>project</artifactId><groupId>com.abc</groupId><version>1.0-SNAPSHOT</version></parent><dependency><groupId>com.abc</groupId><artifactId>project-common</artifactId><version>1.0-SNAPSHOT</version></dependency>

去验证一下看能不能在project-auth里使用刚才在project-common创建的工具类MyStringUtil

一顿操作猛如虎,工资得涨三千五,大功告成

6.打包

打包直接在父工程下install就行

6.补充

刚才新建子工程的时候都是在父工程上右键新建的,如果在子工程上右键那么新建的工程就是被右键的工程的子工程。它们的子父关系与上面解释的同理,可以一层层创建

代码已经推送至github:https://github.com/NiuXiangQian/parent-children-project

Maven子父工程依赖配置,小白也能看得懂相关推荐

  1. MyEclipse + Maven开发Web工程的配置

    MyEclipse + Maven开发Web工程的配置 1. 使用Maven创建webapp工程----原因是使用Maven时一般需要遵循一定的目录结构,虽然也可以使用不同的目录结构,但目前还不熟悉如 ...

  2. IDEA中,maven项目下,lombok插件 ,添加lombok.jar, Maven项目下lombok依赖配置

    IDEA中,maven项目下,lombok插件 ,添加lombok.jar, Maven项目下lombok依赖配置 Maven 项目的创建 在IDEA 21版中,Maven项目无需下载 其他版本,查看 ...

  3. [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  4. yolov5使用2080ti显卡训练是一种什么样的体验我通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程。>>>>>>>>>第二章番外篇

    第二章番外篇:yolov5通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 前期准备: 2 ...

  5. yolov5-4.0环境搭建,零基础小白都能看得懂的教程。YOLOv5搭建的最快搭建方式,踩坑经历详谈)yolov5/yolov4/yolov3/yolov3通>>>>>>>>>>>>>>>>>第一章

    第一章:python最新YOLOv5-4.0环境搭建,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 环境准备: yolov5-4.0环境搭建整体说明 2,anaconda的 ...

  6. 小白都能看得懂的教程 一本教你如何在前端实现markdown编辑器

    小白都能看得懂的教程 一本教你如何在前端实现markdown编辑器   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一些技 ...

  7. idea 父文件_IDEA中Maven项目父子工程依赖

    1.写在前面 假设一个Maven项目(这里是一个SSM整合项目)他的构造布局如下: 话不多说,直接上图: 这个项目存在父子工程(这里删掉了父工程的src文件夹,为了使项目可读性更高) 这里的子模块da ...

  8. 想要成为 NLP 领域的大牛?从 ChatGPT 的 5 大自然语言模型开始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂

    目录 前言 ChatGPT基础科普--知其一点所以然 1. LM 2. Transformer 3. GPT 4. RLHF 5. LLM 参考资料 其它资料下载 前言   如果想在自然语言处理(Na ...

  9. 【Poco学习笔记】Poco库win10下编译(超详细,小白都能看得懂)

    目录 前言 一.前期准备 1.1 安装Openssl 1.2 下载Poco的源码 二.编译源码 三.报错 3.1 Foundation_vs160找不到Windows SDK版本8.1 3.1.1 报 ...

  10. 小白也能看得懂的服务端性能测试指标及问题排查

    软件性能测试目标 软件性能测试的目的主要有以下三点: 评价系统当前性能,判断系统是否满足预期的性能需求. 寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. 判定软件系统的性能表现,预见系统负载 ...

最新文章

  1. openSUSE-openOffice无法输入中文
  2. NSUserDefaults 简介
  3. 华南师大计算机学院团委,不忘初心 牢记使命|软件学院团委举行团建活动
  4. 想要快速搭建开发测试环境?这么做就可以!
  5. 系统总结学习 Python 的 14 张思维导图
  6. 【LeetCode笔记】剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
  7. 在Ubuntu上安装mongoDB
  8. 【AI视野·今日Robot 机器人论文速览 第二期】Mon, 7 Jun 2021
  9. linux重启docker镜像都没了,linux – 没有响应的Docker命令挂起
  10. 期货市场技术分析06_长期图表和商品指数
  11. java 数字 下划线_数字文字中的下划线– Java 7功能
  12. 用CSS border相关属性画三角形
  13. html图片怎么弄透明背景,如何使用CSS实现背景图像透明
  14. 图易服装PDM产品数据管理系统
  15. 计算机桌面桌面设置动态视频,电脑壁纸 篇一:电脑设置动态视频桌面图文教程...
  16. 【.Net MF网络开发板研究-06】以太网转串口
  17. COVID-19 AI-related Technical Paper
  18. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.
  19. mat1 and mat2 shapes cannot be multiplied (128x432 and 576x64)的解决
  20. 如何优雅地管理微信数据库?

热门文章

  1. php 图片后加参数缩图,智能的PHP缩图类
  2. 浏览器主页被360篡改怎么办?
  3. (连载0.1)实践报告:在深度系统用Python3对上市公司年度报告财务报表进行提取
  4. mbr转gpt 无损 linux,磁盘MBR改成GPT|MBR无损转换GPT分区
  5. python 隐藏excel的列和行
  6. react-ant-design输入框输入时拼音字符触发onChange事件(防抖)处理
  7. python调用m文件
  8. EXCEL 在空值中批量填入某个数值
  9. Qt/Windows 获取 MITSUBISHI P95DW 打印机状态信息
  10. matlab usb采集,求助MATLAB是否支持USB数据采集卡