Maven子父工程依赖配置,小白也能看得懂
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子父工程依赖配置,小白也能看得懂相关推荐
- MyEclipse + Maven开发Web工程的配置
MyEclipse + Maven开发Web工程的配置 1. 使用Maven创建webapp工程----原因是使用Maven时一般需要遵循一定的目录结构,虽然也可以使用不同的目录结构,但目前还不熟悉如 ...
- IDEA中,maven项目下,lombok插件 ,添加lombok.jar, Maven项目下lombok依赖配置
IDEA中,maven项目下,lombok插件 ,添加lombok.jar, Maven项目下lombok依赖配置 Maven 项目的创建 在IDEA 21版中,Maven项目无需下载 其他版本,查看 ...
- [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...
- yolov5使用2080ti显卡训练是一种什么样的体验我通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程。>>>>>>>>>第二章番外篇
第二章番外篇:yolov5通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 前期准备: 2 ...
- yolov5-4.0环境搭建,零基础小白都能看得懂的教程。YOLOv5搭建的最快搭建方式,踩坑经历详谈)yolov5/yolov4/yolov3/yolov3通>>>>>>>>>>>>>>>>>第一章
第一章:python最新YOLOv5-4.0环境搭建,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 环境准备: yolov5-4.0环境搭建整体说明 2,anaconda的 ...
- 小白都能看得懂的教程 一本教你如何在前端实现markdown编辑器
小白都能看得懂的教程 一本教你如何在前端实现markdown编辑器 大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一些技 ...
- idea 父文件_IDEA中Maven项目父子工程依赖
1.写在前面 假设一个Maven项目(这里是一个SSM整合项目)他的构造布局如下: 话不多说,直接上图: 这个项目存在父子工程(这里删掉了父工程的src文件夹,为了使项目可读性更高) 这里的子模块da ...
- 想要成为 NLP 领域的大牛?从 ChatGPT 的 5 大自然语言模型开始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂
目录 前言 ChatGPT基础科普--知其一点所以然 1. LM 2. Transformer 3. GPT 4. RLHF 5. LLM 参考资料 其它资料下载 前言 如果想在自然语言处理(Na ...
- 【Poco学习笔记】Poco库win10下编译(超详细,小白都能看得懂)
目录 前言 一.前期准备 1.1 安装Openssl 1.2 下载Poco的源码 二.编译源码 三.报错 3.1 Foundation_vs160找不到Windows SDK版本8.1 3.1.1 报 ...
- 小白也能看得懂的服务端性能测试指标及问题排查
软件性能测试目标 软件性能测试的目的主要有以下三点: 评价系统当前性能,判断系统是否满足预期的性能需求. 寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. 判定软件系统的性能表现,预见系统负载 ...
最新文章
- openSUSE-openOffice无法输入中文
- NSUserDefaults 简介
- 华南师大计算机学院团委,不忘初心 牢记使命|软件学院团委举行团建活动
- 想要快速搭建开发测试环境?这么做就可以!
- 系统总结学习 Python 的 14 张思维导图
- 【LeetCode笔记】剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
- 在Ubuntu上安装mongoDB
- 【AI视野·今日Robot 机器人论文速览 第二期】Mon, 7 Jun 2021
- linux重启docker镜像都没了,linux – 没有响应的Docker命令挂起
- 期货市场技术分析06_长期图表和商品指数
- java 数字 下划线_数字文字中的下划线– Java 7功能
- 用CSS border相关属性画三角形
- html图片怎么弄透明背景,如何使用CSS实现背景图像透明
- 图易服装PDM产品数据管理系统
- 计算机桌面桌面设置动态视频,电脑壁纸 篇一:电脑设置动态视频桌面图文教程...
- 【.Net MF网络开发板研究-06】以太网转串口
- COVID-19 AI-related Technical Paper
- vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.
- mat1 and mat2 shapes cannot be multiplied (128x432 and 576x64)的解决
- 如何优雅地管理微信数据库?
热门文章
- php 图片后加参数缩图,智能的PHP缩图类
- 浏览器主页被360篡改怎么办?
- (连载0.1)实践报告:在深度系统用Python3对上市公司年度报告财务报表进行提取
- mbr转gpt 无损 linux,磁盘MBR改成GPT|MBR无损转换GPT分区
- python 隐藏excel的列和行
- react-ant-design输入框输入时拼音字符触发onChange事件(防抖)处理
- python调用m文件
- EXCEL 在空值中批量填入某个数值
- Qt/Windows 获取 MITSUBISHI P95DW 打印机状态信息
- matlab usb采集,求助MATLAB是否支持USB数据采集卡