Chiriri's blog Chiriri's blog
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)

Iekr

苦逼后端开发
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)
  • JavaSE

  • JavaEE

    • MyBatis
    • Jackson
    • Jedis
    • Maven
    • POI
    • Spring
    • Spring MVC
    • Maven 高级
      • 分模块开发与设计
      • 聚合
      • 继承
      • 属性
      • 版本管理
      • 资源文件
      • 多环境开发
      • 跳过测试
      • 私服
        • 私服资源获取
        • 资源发布
    • Dubbo
    • Zookeeper
    • Spring Security
    • Spring Boot
    • Spring Boot 高级
    • RabbitMQ
    • RabbitMQ 高级
    • Spring Cloud
    • Docker
    • ElasticSearch
    • ElasticSearch 高级
  • Linux

  • MySQL

  • NoSQL

  • Python

  • Python模块

  • 机器学习

  • 设计模式

  • 传智健康

  • 畅购商城

  • 博客项目

  • JVM

  • JUC

  • Golang

  • Kubernetes

  • 硅谷课堂

  • C

  • 源码

  • 神领物流

  • RocketMQ

  • 短链平台

  • 后端
  • JavaEE
Iekr
2021-09-12
目录

Maven 高级

# Maven 高级

# 分模块开发与设计

  1. 将与当前层无关的内容清除掉
  2. 在 pom.xml 将另外层的导入坐标
  3. compile 预编译一下 是否出错
  4. 然后 install 打包成坐标

image-20210912220501150

# 聚合

当一个工程构建 其他分模块的工程都会跟随着构建

在主工程管理 中的 pom.xml

    <!--    定义该工程用于进行构建管理-->
    <packaging>pom</packaging>

    <!--    管理工程的列表-->
    <modules>
        <!--        具体的工程名称-->
        <module>../ssm_dao</module>
        <module>../ssm_pojo</module>
        <module>../ssm_service</module>
        <module>../ssm_controller</module>
    </modules>
1
2
3
4
5
6
7
8
9
10
11

# 继承

Maven 使用 dependencyManagement 元素来提供了一种管理依赖版本号的方式。

通常会在一个组织或者项目的最顶层的父 POM 中看到 dependencyManagement 元素。

使用 pom.xml 中的 dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。

Maven 会沿着父子层次向上走,直到找到一个拥有 dependencyManagement 元素的项目,然后它就会使用这个

dependencyManagement 元素中指定的版本号。

这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,优势:

  • 这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;
  • 另外如果某个子项目需要另外的一个版本,只需要声明 version 就可

dependencyManagement 里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。

如果不在子项目中声明依赖,是不会从父项目中继承下来的,只有在子项目中写了该依赖项并且没有指定具体版本,才会从父项目中继承该项 且 version 和 scope 都读取自父 pom;

如果子项目中指定了版本号,那么会使用子项目中指定的 jar 版本

在父工程中 定义 声明依赖

<dependencyManagement>
        <!--        所有的依赖包-->
        <dependencies>

        </dependencies>
    </dependencyManagement>
1
2
3
4
5
6

插件继承

<pluginManagement>
            <plugins></plugins>
        </pluginManagement>
1
2
3

在子工程的 pom 中定义父工程

    <parent>
        <groupId>com.itheima</groupId>
        <artifactId>springmvc_validator</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--        父工程的pom文件-->
        <relativePath>../ssm/pom.xml</relativePath>
    </parent>
1
2
3
4
5
6
7

在子工程所有的依赖只有父工程有的 都可以不写版本号

# 属性

定义属性

    <!--    定义属性-->
    <properties>
        <!--        标签名为属性名  值为属性值-->
        <spring.version>5.1.9.RELEASE</spring.version>
    </properties>
1
2
3
4
5

使用属性

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <!--            使用${属性名} 来获取值-->
            <version>${spring.version}</version>
        </dependency>
1
2
3
4
5
6

${version} 是 maven 内部提供的 当前 pom 工程的版本号 我们在继承

# 版本管理

  • snapshot (快照版本)
  • release (发布版本)

# 资源文件

在 POM 外的资源文件中使用定义好的属性值

定义属性

    <!--    定义属性-->
    <properties>
        <!--        标签名为属性名  值为属性值-->
        <jdbc.url>jdbc:mysql://localhost:3306/ssm_db</jdbc.url>
    </properties>
1
2
3
4
5

开启资源配置加载 如果是 test 测试目录下的资源文件在 <resource> 包含在内的标签前面都加上 test

   <build>  
			<resource>
                <!--            资源文件的路径-->
       	 <directory>${project.basedir}/src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
1
2
3
4
5
6
7
8

在资源文件中引用

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=123456
1
2
3
4

# 多环境开发

不同环境使用定义好的多个属性值

    <!--创建多环境-->
    <profiles>
        <profile>
            <!--            定义环境对应的唯一名称-->
            <id>pro_eny</id>
            <!--定义环境中专用的属性值-->
            <properties>
                <jdbc.url>jdbc:mysql://localhost:3306/ssm_db</jdbc.url>
            </properties>
            <!--            默认环境 true为默认-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>

        <profile>
            <id>dep_env</id>
            <properties>
                <jdbc.url>jdbc:mysql://localhost:3307/ssm_db</jdbc.url>
            </properties>
        </profile>
    </profiles>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

使用环境

mvn install -P 对应环境 id

mvn install -P dep_env
1

# 跳过测试

  • 在 IDE 的 Maven 中 把 test 跳过
  • 命令行 mvm install -D skipTests
  • image-20210913221539571

# 私服

Nexus

https://help.sonatype.com/repomanager3/download

运行 bin 下的 nexus

nexus /run nexus
1

启动完成后 localhost:8081

# 私服资源获取

image-20210914062647556

# 资源发布

image-20210914063217447

或者 IDA 中 maven 的 deploy

id 对应本地的 maven 对应 servers 的 username 和 password

编辑 (opens new window)
上次更新: 2025/01/01, 10:09:39
Spring MVC
Dubbo

← Spring MVC Dubbo→

最近更新
01
k8s
06-06
02
进程与线程
03-04
03
计算机操作系统概述
02-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Iekr | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式