Maven 座标概念与作用

座标的概念 Maven 中的座标用于描述仓库中资源的位置
座标的作用 唯一标识
Maven 座标的主要组成
groupld 组织名
artifactld 项目名称
version 版本号

Maven 项目的 pom.xml 文件解析

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project
  3. xmlns="http://maven.apache.org/POM/4.0.0"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  6. <modelVersion>4.0.0</modelVersion>
  7. <groupId>com.magebug</groupId>
  8. <artifactId>maven</artifactId>
  9. <version>1.0</version>
  10. </project>
行数 说明
1 xml 是一个语言,第1行是 .xml 文件的文件头
2 标签,所有的 xml 内容都写在这个标签内,他需要自闭和。</project>
3-5 根元素,格式规定,不去管他是什么东西。
6 Maven 的对象模型版本号
8 组织名
9 项目名
10 版本号

Maven 标签说明

标签名 说明
<dependencies> 设置当前工程的所有依赖
<dependency> 一个具体的依赖
<groupld> 组织名
<artifactld> 项目名称
<version> 版本号
- snapshots:开发中的版本
- release :比较稳定的发布版本
<optional>
- true:隐藏本项目被依赖时所使用的依赖
- false:默认显示
<exclusions> 设置当前工程的所有排除依赖
<exclusion> 一个具体的排除依赖
<scope> 作用范围
- compole(默认):全有效
- test:测试范围有效
- provided:主代码和测试代码有效
- runtime:打包时有效

Maven 聚合

1.聚合模块

项目构建和版本依赖全都由一个模块来管理。

  1. 定义聚合模块的打包方式为:pom(一个提示:默认的打包方式是:jar
  2. 定义要管理的工程列表:modules
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.magebug</groupId>
  7. <artifactId>Maven</artifactId>
  8. <version>1.0</version>
  9. <!--定义该工程用于进行构建管理-->
  10. <packaging>pom</packaging>
  11. <!--管理的工程列表-->
  12. <modules>
  13. <!--具体工程的相对路径-->
  14. <module>user-service</module>
  15. <module>order-service</module>
  16. <module>eureka-server</module>
  17. <module>feign-api</module>
  18. <module>gateway</module>
  19. </modules>
  20. </project>

2.模块继承

既然项目构建可以由一个模块来管理,那么我们可以引入父子的概念,由父工程管理所有的版本依赖。

  1. 在父工程中的pom.xml文件内,定义所有要用到的依赖。
  2. 在子工程中使用父工程定义的依赖,即不在子工程的pom.xml写版本号version,方便统一管理。
    1. <dependencyManagement>
    2. <!--父工程管理的全部依赖-->
    3. <dependencies>
    4. <!--父工程管理的具体依赖-->
    5. <dependency>
    6. </dependency>
    7. </dependencies>
    8. </dependencyManagement>
    1. <!--声明子工程的父工程信息-->
    2. <parent>
    3. <artifactId></artifactId>
    4. <groupId></groupId>
    5. <version></version>
    6. </parent>

    3.自定义属性和使用

    1. <!--定义变量 提取变量用 ${key}} -->
    2. <properties>
    3. <key>value<key/>
    4. <key>value<key/>
    5. <key>value<key/>
    6. </properties>