首页 > 编程语言 >java pom两个模块需要互相引用怎么办

java pom两个模块需要互相引用怎么办

时间:2024-09-19 19:22:07浏览次数:13  
标签:xml java 项目 module project pom 模块

在 Maven 项目中,如果两个模块需要互相引用,通常的做法是将它们放在同一个父项目下,并使用父项目的聚合功能来管理这些模块。这样做可以确保模块之间的依赖关系能够正确解析。

项目结构

假设你有两个模块 module-amodule-b,它们需要互相引用。你可以创建一个父项目 parent-project,并在父项目的 pom.xml 中声明这两个模块。

项目目录结构

parent-project
│
├── module-a
│   └── pom.xml
│
├── module-b
│   └── pom.xml
│
└── pom.xml

父项目的 pom.xml

在父项目的 pom.xml 中,声明这两个模块:

<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.example</groupId>
    <artifactId>parent-project</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>module-a</module>
        <module>module-b</module>
    </modules>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>

module-apom.xml

module-apom.xml 中,声明对 module-b 的依赖:

<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>

    <parent>
        <groupId>com.example</groupId>
        <artifactId>parent-project</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>module-a</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>module-b</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>

module-bpom.xml

module-bpom.xml 中,声明对 module-a 的依赖:

<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>

    <parent>
        <groupId>com.example</groupId>
        <artifactId>parent-project</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>module-b</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>module-a</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>

构建项目

  1. 安装父项目: 在父项目的根目录下运行以下命令,这将安装所有子模块到本地仓库:
mvn clean install
  1. 构建子模块: 你可以分别在 module-amodule-b 目录下运行 mvn clean install,或者在父项目的根目录下运行 mvn clean install 来构建整个项目。

注意事项

  1. 循环依赖:虽然 Maven 允许模块之间的相互依赖,但在实际开发中应尽量避免循环依赖。循环依赖可能导致构建失败或难以维护的代码结构。
  2. 版本管理:确保所有模块的版本一致,使用 ${project.version} 可以确保子模块的版本与父项目保持同步。
  3. 依赖顺序:Maven 会根据模块的依赖关系自动确定构建顺序,但有时需要手动调整模块的构建顺序。

标签:xml,java,项目,module,project,pom,模块
From: https://blog.51cto.com/u_16390833/12058381

相关文章

  • java识别是不是ajax请求
    在JavaWeb应用中,识别是否是一个AJAX请求通常可以通过检查HTTP请求头中的X-Requested-With头字段来实现。如果该字段的值为XMLHttpRequest,则可以认为这是一个AJAX请求。示例代码以下是一个示例,展示了如何在SpringMVC控制器中识别AJAX请求:1.SpringMVC控制器importorg.spring......
  • java-----方法引用
    方法引用:把已有的方法拿过来用,当做函数式接口中抽象方法的方法体方法引用符是::注意:    1.引用处必须是函数式接口    2.被引用的方法已经存在    3.被引用方法的形参和返回值需要跟抽象方法保持一致    4.被引用方法的功能要满足当前需......
  • JavaScript在数据可视化领域的探索与实践
    目录引言JavaScript可视化库概览D3.js基础入门1.引入D3.js2.绘制简单的条形图3.添加轴交互性与动画实际应用场景结论引言在数据驱动决策日益重要的今天,数据可视化成为连接数据与洞察的桥梁。JavaScript,作为前端开发的主力军,凭借其灵活性和丰富的库支持,在数据......
  • java计算机毕业设计少儿英语在线学习平台APP(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球化进程的加速和互联网技术的飞速发展,英语作为国际交流的重要工具,其教育需求在少儿群体中日益凸显。传统线下英语教育模式受限于时间、地点及......
  • JavaSE——多线程基础
    概述        现代操作系统(Windows,macOS,Linux)都可以执行多任务。多任务就是同时允许多个任务。例如:播放音乐的同时,浏览器可以进行文件下载,同时可以进行QQ消息的收发。    CPU执行代码都是一条一条顺序执行的,但是,即使是单核CPU,也可以同时运行多个任务。因为操......
  • Java·Swing窗口登录源码
    文章目录概要整体架构流程技术名词解释技术细节小结概要Java Swing是Java基础类库的一部分,主要用于开发图形用户界面(GUI)程序整体架构流程1.准备好mysql数据库也可以使用云端数据库2.一个灵活的脑子3.IDEA技术名词解释一、javax.swing.JOption......
  • Java中异常类处理机制的学习
    异常处理机制目录异常处理机制抛出异常捕获异常异常传播抛出异常当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。throw与throws的用法throws:通常被用在......
  • JAVA进阶-枚举,类加载器,反射
    day15-枚举,类加载器,反射枚举为什么有枚举为了简洁的表示一些固定的值,Java就给我们提供了枚举。定义格式是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。格式publicenums{ 枚举项1,枚举项2,枚枚举项3;}定义枚举类要用关键字enum定义......
  • 全网最细Java学习路线!!!!!,技术笔记及教程持续更新
    全部配套资源博主正在持续更新,一键三连感谢支持部分笔记已经更新到博客里面【Java学习路线图】Java最高效学习路线图(依次向下顺序学习即可)==》Java基础==》Javaweb(含SSM框架)==》AI+若依框架==》微服务全套==》23年Java大厂面试==》MySQL==》JVM==》数据......
  • 基于JAVA作业管理系统设计的计算机毕设源码+论文
    摘要课题目标是设计并实现一个B/S体系结构的教务信息管理系统。结合实践,理解网页开发技术和数据库的基本知识,学习相关开发工具和应用软件,熟悉系统设计的过程,熟练掌握网络数据库编程方法。本系统用JSP技术来编写本系统,数据库用Mysql来连接系统。本论文主要涉及软件,数据库与网络技术......