1. Maven

Maven 是一个项目管理工具 ,将项目开发和管理过程抽象成一个项目对象模型(POM)

POM(Project Object Model) 项目对象模型

04. Maven - 图1

04. Maven - 图2

2. 环境变量

配置 MAVEN_HOME = MAVEN目录

然后在path中 配置 %MAVEN_HOME%\bin

  1. mvn

3. 坐标

Maven中的坐标用于描述仓库中资源的位置

https://repo1.maven.org/maven2/

https://mvnrepository.com/

4. 仓库配置

自定义本地仓库 默认为 c:/用户/.m2 目录下

创建 repository 目录 并把maven中conf的settings.xml放到同级中

  1. <!-- 配置 settings -->
  2. <localRepository>D:\compile\maven\repository</localRepository>

然后把修改后的settings同样覆盖掉 maven conf下的文件

4.1. 远程仓库配置

默认远程仓库都是在https://repo1.maven.org/maven2/ 我们换成阿里巴巴的镜像

配置同样是 settings.xml 中

  1. <mirror>
  2. <id>aliyunmaven</id>
  3. <mirrorOf>*</mirrorOf>
  4. <name>阿里云公共仓库</name>
  5. <url>https://maven.aliyun.com/repository/public</url>
  6. </mirror>

5. 构建

  • mvn compile 编译
  • mvn clean 清理
  • mvn test 测试
  • mvn package 打包
  • mvn install 安装到本地仓库

6. 依赖管理

  1. <!-- 依赖父标签 -->
  2. <dependencies>
  3. <!-- 依赖子标签每个依赖需要用dependency包裹 -->
  4. <dependency>
  5. <!-- 所属群组id -->
  6. <groupId>com.alibaba</groupId>
  7. <!-- 所属项目id -->
  8. <artifactId>fastjson</artifactId>
  9. <!-- 版本号 -->
  10. <version>1.2.75</version>
  11. </dependency>
  12. </dependencies>

可以进行依赖传递 即依赖可以加载另外一个项目中依赖 只需要提供群组id和项目id

04. Maven - 图3

6.1. 可选依赖

可以选择对外隐藏指定的依赖资源 只有依赖传递才能用

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>fastjson</artifactId>
  5. <version>1.2.75</version>
  6. <!-- 对外是否隐藏 -->
  7. <optional>true</optional>
  8. </dependency>
  9. </dependencies>

6.2. 排除依赖

排除指定的依赖 黑名单

  1. <dependencies>
  2. <dependency>
  3. <groupId>依赖传递下级路径</groupId>
  4. <artifactId>fastjson</artifactId>
  5. <version>1.2.75</version>
  6. </dependency>
  7. <!-- 排除依赖 -->
  8. <exclusions>
  9. <exclusion>
  10. <!-- 所属群组id -->
  11. <groupId>org.antlr</groupId>
  12. <!-- 所属项目id -->
  13. <artifactId>antlr4-runtime</artifactId>
  14. </exclusion>
  15. </exclusions>
  16. </dependencies>

7. 依赖范围

依赖的jar默认在任何地方都可以用 使用scope标签设定其作用范围

04. Maven - 图4

依赖传递 作用范围也会有影响

04. Maven - 图5

8. 生命周期

  • clean 清理工作

    • pre-clean
    • clean
    • post-clea
  • default 构建

    • 04. Maven - 图6
    • 执行哪个构建 就执行到那个构建就结束 下面的不会执行
  • site

    • 04. Maven - 图7

8.1. 插件

https://maven.apache.org/plugins/index.html

插件与生命周期内的阶段绑定 执行到对应生命周期就执行对应的插件给你

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <build>
  4. <plugins>
  5. <plugin>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-maven-plugin</artifactId>
  8. <executions>
  9. <execution>
  10. <!-- 此插件在什么生命周期运行 -->
  11. <phase>generate-test-resources</phase>
  12. </execution>
  13. </executions>
  14. </plugin>
  15. </plugins>
  16. </build>
  17. </project>