maven 包管理平台-05-multi module 多模块

拓展阅读

maven 包管理平台-01-maven 入门介绍 + Maven、Gradle、Ant、Ivy、Bazel 和 SBT 的详细对比表格

maven 包管理平台-02-windows 安装配置 + mac 安装配置

maven 包管理平台-03-maven project maven 项目的创建入门

maven 包管理平台-04-maven archetype 项目原型

maven 包管理平台-05-multi module 多模块

maven 包管理平台-06-常用技巧 实时更新快照/乱码问题/下载很慢/包依赖解决包冲突/如何导入本地 jar

maven 包管理平台-07-plugins 常见插件介绍

maven 包管理平台-08-nexus 自己搭建 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.ryo</groupId>
    <artifactId>multiModule</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>

multiModule 创建子模块 util,同时我们以类似的方式创建另一个模块 dao

子模块

  • multiModulepom.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.ryo</groupId>
    <artifactId>multiModule</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>util</module>
    </modules>

</project>
  • util 模块的 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">
    <parent>
        <artifactId>multiModule</artifactId>
        <groupId>com.ryo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>util</artifactId>

</project>
  • util 模块中的 StringUtil.java 文件
public class StringUtil {
    private static final String EMPTY_STRING = "";

    private StringUtil(){}

    public static boolean isEmpty(String string) {
        return string == null || string.trim().equals(EMPTY_STRING);
    }
}

使用

如果我们想要在 dao 模块中使用 util 模块的 StringUtil.java,我们应该按照以下步骤进行:

  • 安装

util 模块或 multiModule(根模块)中安装您想要使用的模块。

多模块

  • 定义

dao 模块的 pom.xml 中定义 util 的依赖关系。

<?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>
        <artifactId>multiModule</artifactId>
        <groupId>com.ryo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dao</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.ryo</groupId>
            <artifactId>util</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
  • 使用
public class UserDao {
    public boolean login(String username, String password) {
        return StringUtil.isEmpty(username) || StringUtil.isEmpty(password);
    }
}

提示

如果您在 根模块 中定义了 [一个模块] 的依赖关系,那么它的所有子模块都可以使用 [一个模块]。

但通常我们可能会像这样使用:

  • 根模块的 pom.xml 中,声明 使用。
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.ryo</groupId>
            <artifactId>util</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</dependencyManagement>
  • dao 模块的 pom.xml 中,定义 使用。
<dependencies>
    <dependency>
        <groupId>com.ryo</groupId>
        <artifactId>util</artifactId>
    </dependency>
</dependencies>

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/424454.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

183896-00-6,Biotin-C3-PEG3-C3-NH2,可以选择性降解靶蛋白

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;183896-00-6&#xff0c;Biotin-C3-PEG3-C3-NH2&#xff0c;Biotin-C3-PEG3-C3-amine&#xff0c;生物素-C3-PEG3-C3-胺 一、基本信息 【产品简介】&#xff1a;Biotin-PEG3-C3-NH2是一种PROTAC linker&#xff0c;…

【python】爬取链家二手房数据做数据分析【附源码】

一、前言、 在数据分析和挖掘领域中&#xff0c;网络爬虫是一种常见的工具&#xff0c;用于从网页上收集数据。本文将介绍如何使用 Python 编写简单的网络爬虫程序&#xff0c;从链家网上海二手房页面获取房屋信息&#xff0c;并将数据保存到 Excel 文件中。 二、效果图&#…

网工必懂的ICMP协议

福建厦门微思网络始于2002年&#xff0c;面向全国招生&#xff01; 主要课程&#xff1a;华为、思科、红帽、Oracle、VMware、CISP安全系列、PMP....... 网络工程师实用课程华为HCIA课程介绍 网络工程师使用课程华为HCIP课程介绍 网络工程师使用课程华为HCIE课程介绍 因特网…

volatile 关键字 (一)

volatile 关键字 &#xff08;一&#xff09; 文章目录 volatile 关键字 &#xff08;一&#xff09;如何保证变量的可见性&#xff1f;如何禁止指令重排序&#xff1f; 文章来自Java Guide 用于学习如有侵权&#xff0c;立即删除 如何保证变量的可见性&#xff1f; 在 Java 中…

OJ:移除链表元素

203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;这个题可以直接在原链表上进行修改&#xff0c;但是修改链表的指向是有点麻烦的&#xff0c;所以我们给两个指针&#xff0c;phead和ptail,这是新链表的两个指针&#xff0c;再给一个指针pcur来遍历…

Doris——纵腾集团流批一体数仓架构

目录 前言 一、早期架构 二、架构选型 三、新数据架构 3.1 数据中台 3.2 数仓建模 3.3 数据导入 四、实践经验 4.1 准备阶段 4.2 验证阶段 4.3 压测阶段 4.4 上线阶段 4.5 宣导阶段 4.6 运行阶段 4.6.1 Tablet规范问题 4.6.2 集群读写优化 五、总结收益 六…

数据结构.多项式加法

#include<iostream> using namespace std; int a[100][2], b[100][2], sum[100][2]; int n, m; int main() {cin >> n;//输入第一个多项式的项数for (int i 0; i < n; i){cin >> a[i][0] >> a[i][1];//分别输入系数和指数}cin >> m;//输入第…

[Java 探索者之路] 一个大厂都在用的分布式任务调度平台

分布式任务调度平台是一种能够在分布式计算环境中调度和管理任务的系统&#xff0c;在此环境下&#xff0c;各个任务可以在独立的节点上运行。它有助于提升资源利用率&#xff0c;增强系统扩展性以及提高系统对错误的容忍度。 文章目录 1. 分布式任务调度平台1. 基本概念1.1 任…

02.刚性事务

刚性事务 1.DTP模型 X/Open组织介绍 X/OPEN是一个组织&#xff08;现在的open group&#xff09;X/Open国际联盟有限公司是一个欧洲基金会&#xff0c;它的建立是为了向UNIX环境提供标准。它主要的目标是促进对UNIX语言、接口、网络和应用的开放式系统协议的制定。它还促进在…

【兔子机器人】根据自身机器人参数修改simulink模型

关节电机 机体初始高度 &#xff01;&#xff01;&#xff01;接下来尝试修改各腿的坐标朝向

【文献管理】zotero插件4——获取知网pdf、中文文献识别与目录生成

文章目录 zotero获取知网PDFzotero——中文文献识别&#xff08;茉莉花插件&#xff09;学位论文目录生成 zotero获取知网PDF zotero——中文文献识别&#xff08;茉莉花插件&#xff09; 为下载的学位论文添加目录中文文献识别&#xff1a;jasminum 下载pdflabs下载茉莉花插…

Day23-磁盘管理与软件包管理

Day23-磁盘管理与软件包管理 1. 什么是文件系统&#xff1f;2. 为什么磁盘分区后需要格式化&#xff1f;3. 常见文件系统类型4. 文件系统体系结构&#xff08;图&#xff09;5. 生产文件系统选型5.1 SAS/SATA磁盘对应文件系统的选择&#xff1a;5.2 常规的服务应用建议&#xf…

(C语言)回调函数

回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#xff0c;被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅…

基于Java SSM框架实现众筹平台网站系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现众筹平台网站系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring…

对缓冲区的初步认识——制作进度条小程序

对缓冲区的初步认识--进度条小程序 前言预备知识回车和换行的区别输出缓冲区/n 有清空输出缓冲区的作用stdout是什么&#xff1f;验证一切皆文件为什么是\n行刷新&#xff1f; 倒计时程序原理 代码实现为什么这里要强制刷新&#xff1f;没有会怎样&#xff1f;为什么是输出的是…

英福康INFICON XTC/3/2薄膜镀层控制仪软件和使用说明

英福康INFICON XTC/3/2薄膜镀层控制仪软件和使用说明

【嵌入式实践】【芝麻】【设计篇-3】从0到1给电动车添加指纹锁:项目整体规划

0. 前言 该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹&#xff0c;电动车进入P档等待时计时&#xff0c;计时超过5min则自动锁车&#xff0c;计时过程中按刹车可中断P档状态&#xff0c;同时中断锁车计时。改项目我称之为“芝…

[Python] 获取当前函数名的三种方法

使用__name__获取当前函数名 函数内和函数外都可以用__name__特殊属性。 def get_fun_name_1():fun_name get_fun_name_1.__name__print(fun_name)get_fun_name_1.__name__输出&#xff1a;get_fun_name_1 使用sys模块获取当前运行的函数名 sys._getframe()可以用来获取当…

编码器原理图

操作 旋转编码器提供两种交互方式&#xff1a; 每次用户旋转旋钮时&#xff0c;都会在 DT 和 CLK 引脚上产生低电平信号&#xff1a; 顺时针旋转会先使CLK引脚变为低电平&#xff0c;然后DT引脚也变为低电平。 逆时针旋转会使 DT 引脚首先变为低电平&#xff0c;然后 CLK 引脚…

linux环境安装cuda toolkit

1 全新安装 如果环境中没安装过cuda版本&#xff0c; 这种情况下比较简单。 直接在https://developer.nvidia.com/cuda-toolkit-archive选择对应版本下载安装即可。 如下为安装cuda toolkit 11.8. 2 环境中已经存在其他版本 这种情况下比较复杂一些。 首先要确认最高支持的…