写点什么

Maven 依赖管理与生命周期

作者:Emperor_LawD
  • 2022 年 5 月 14 日
  • 本文字数:1354 字

    阅读完需:约 4 分钟

Maven 依赖管理与生命周期

依赖:指当前项目运行所需要的 jar 包,一个项目可以设置多个依赖

依赖配置

  • 格式


<!--设置当前项目所依赖的所有jar-->  <dependencies>    <!--设置具体的依赖-->    <dependency>      <!--依赖所属群组id-->      <groupId></groupId>      <!--依赖所属项目id-->      <artifactId></artifactId>      <!--依赖版本号-->      <version></version>    </dependency>  </dependencies>
复制代码

依赖传递

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系

  • 间接依赖:模块也可当作依赖进行传递

  • 代码


    <dependency>      <groupId>org.example</groupId>      <artifactId>project01</artifactId>      <version>1.0-SNAPSHOT</version>    </dependency>
复制代码
  • 效果

  • 冲突问题

  • 路径优先:当依赖中出现相同资源时,层级越浅,优先级越低

  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的

  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

可选依赖

指对外隐藏当前所依赖的资源(不透明)


  • optional:默认 false


<dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.12</version>  <!--隐藏依赖-->  <optional>true</optional></dependency>
复制代码


  • project02 中就看不到 project03 中所使用的依赖了

排除依赖

  • 主动断开依赖的资源,被排除的资源无需指定版本


<dependency>  <groupId>org.example</groupId>  <artifactId>project03</artifactId>  <version>1.0-SNAPSHOT</version>  <!--排除依赖-->  <exclusions>    <!--具体依赖-->    <exclusion>      <groupId>log4j</groupId>      <artifactId>log4j</artifactId>    </exclusion>  </exclusions></dependency>
复制代码


  • project02 断开 project03 中的 log4j

依赖范围

  • 依赖的 jar 默认情况可以在任何地方使用,可以通过 scope 标签设定范围

  • 作用范围

  • 主程序范围(main 文件夹内)

  • 测试程序范围(test 文件夹内)

  • 是否参与打包(package 指令范围内)

生命周期与插件


构建生命周期

  • 指的是一次构建过程经历了多少个事件

  • 运行哪一项就会执行哪一项上面的所有事件,例如:执行 test 就会执行 test 直上的所有事件

  • clean:清理工作 pre-clean:执行需要在 clean 之前完成的工作 clean:移除所有上一次构建生成的文件 pro-clean:执行需要在 clean 之后立刻完成的工作

  • default:核心工作,如编译、测试、打包、部署等 validate:校验 compile:编译 test:测试 package:打包 verify:验证 install:安装 deploy:部署

  • site:产生报告,发布站点等 site:生成项目的站点文档

插件

  • 与生命周期中的阶段绑定,在执行到对应生命周期时执行对应的插件功能

  • 例:打不同阶段的 jar 包


<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <goals> <!--两个不同的包--> <goal>jar</goal> <goal>test-jar</goal> </goals> <!--处于什么阶段--> <phase>generate-test-resources</phase> </execution> </executions> </plugin> </plugins> </build>
复制代码


发布于: 刚刚阅读数: 5
用户头像

Emperor_LawD

关注

愿能如萤火一般,可以在黑夜里发一点光。 2021.05.19 加入

还未添加个人简介

评论

发布
暂无评论
Maven 依赖管理与生命周期_maven_Emperor_LawD_InfoQ写作社区