美文网首页
Maven 多模块构建

Maven 多模块构建

作者: Tinyspot | 来源:发表于2022-08-23 07:52 被阅读0次

1. 多模块构建

  • POM 是项目对象模型,该文件可以被继承
  • <packaging> 可以指定打包方式,若无 <packaging> 默认打 jar

1.1 ClassPath

  • src/main/javasrc/main/resources
  • 编译的 java 文件(.class)和 resource 资源下的文件都存放在 target/classes
  • A.class.getClassLoader().getResource("").getPath();
  • Thread.currentThread().getContextClassLoader().getResource("");

2. 聚合方式

  • 每个子项目有自己的 POM 文件,子项目的 POM 会继承父项目的 POM
  • 父工程包含子模块时使用 <modules>,可以通过<modules>编译多个模块
  • 只要构建父项目就能够构建所有的子项目

父模块: <packaging>pom</packaging>

<groupId>com.boot.train</groupId>
<artifactId>boot-train</artifactId>
<name>boot-train</name>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.7</version>
    <relativePath/>
</parent>

<modules>
    <module>boot-train-start</module>
    <module>boot-train-base</module>
</modules>

子模块可以继承父 pom 文件 (IDEA: new > module...)

<parent>
    <groupId>com.boot.train</groupId>
    <artifactId>boot-train</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>boot-train-start</artifactId>
<name>boot-train-start</name>

若子模块又有子模块

<parent>
  <groupId>com.boot.train</groupId>
  <artifactId>boot-train</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>boot-train-base</artifactId>
<name>boot-train-base</name>
<!-- 若子模块又有子模块,则子模块也要改为 packaging:pom -->
<packaging>pom</packaging>

<modules>
  <module>boot-train-basic</module>
</modules>

子孙模块

<parent>
    <groupId>com.boot.train</groupId>
    <artifactId>boot-train-base</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

  <artifactId>boot-train-basic</artifactId>
  <name>boot-train-basic</name>

2.1 聚合

<modules> 可以将 Maven 工程聚合到一起,进行统一操作,比如父工程打包时,其下聚合的工程都会被打包

2.2 依赖范围

  • scope:provided 表示这个包不提供,其它项目引入的时候也看不到这个包
  • optional:true 表示当前依赖不能向下传递成为间接依赖;可以节省开销,同时减少依赖冲突
  • scope:provided 依赖不会传递给其它引用本模块的模块, optional=true就要看情况

3. relativePath 方式

  • 适用于非同级模块
  • 通过 <relativePath> 指定父模块 pom
  • 无需 modules

子模块

<parent>
    <groupId>com.boot.train</groupId>
    <artifactId>boot-train</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!-- 相对路径 -->
    <relativePath>../boot-train/pom.xml</relativePath>
</parent>

<artifactId>boot-train-base</artifactId>
<packaging>pom</packaging>

子孙模块

<parent>
    <groupId>com.boot.train</groupId>
    <artifactId>boot-train-base</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../boot-train-base/pom.xml</relativePath>
</parent>

<artifactId>boot-train-basic</artifactId>

4. 版本管理

4.1 自定义标签<properties>

  • 自定义标签:项目+version

父模块管理版本号

<properties>
    <java.version>1.8</java.version>
</properties>

4.1 依赖管理

  • 父工程添加的依赖,所有子模块会无条件继承,可使用 <dependencyManagement> 来管理依赖
  • 若子模块指定依赖的版本号,则不会继承父工程的版本号

父模块 <dependencyManagement>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

子模块 <dependencies>

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

相关文章

  • Rainbond Java Maven 多模块源码构建

    Maven 多模块项目构建识别策略 Maven 多模块项目是根据 pom.xml 文件(下面简称 pom)来划分的...

  • Maven参数 及 Maven反应堆 多模块项目指定构建某个模块

    在默认情况下,Maven会根据多模块配置构建所有的模块,Maven还会根据模块间的依赖关系自动计算构建顺序,以确保...

  • Maven构建多模块工程

    构建多模块Maven工程 基础知识铺垫  Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代...

  • Maven 多模块构建

    1. 多模块构建 POM 是项目对象模型,该文件可以被继承 可以指定打包方式,若无 默认打 jar 1.1 C...

  • Child module D:\workspace\magicB

    maven 多模块构建 nvm clean install 命令报错, Child module D:\works...

  • jenkins自动化构建配置

    背景 jenkins自动化构建gitlab项目 gradle或maven多模块项目在自动化构建时希望每个模块独立部...

  • Maven 多模块项目

    本篇 介绍了如果构建一个Maven的多模块项目,一些问题的解决办法。 简单理解 Maven的多模块,其实可以简单的...

  • maven单独构建多模块项目中的单个模块

    maven 单独构建多模块项目中的单个模块 说明: 1、可能存在的场景,多模块项目没有互相引用,那么此时可以单独构...

  • maven 与多模块构建

    实际工作中,从远程仓库拉下来的 java 工程可能会由多个子模块工程组成,像 dk 刚学习那会总是整不清模块之间的...

  • Maven构建多模块工程

    除非是简单的工程项目,实际工作中碰到的大部分Maven工程都是多模块的,各个项目模块可以独立开发,其中某些模块又可...

网友评论

      本文标题:Maven 多模块构建

      本文链接:https://www.haomeiwen.com/subject/umvhirtx.html