2019-01-Maven-小总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t1g2q3/article/details/85529407
  • 什么是Maven?
  • Maven的坐标
    • groupId:所需Jar包的项目名
    • artifactId:所需Jar包的模块名
    • version:所需Jar包的版本号
  • Maven的结构
    • bin-命令
    • boot-类加载器框架
    • conf-配置
      • 局部配置优先于全局配置
        • 配置优先级从高到低:pom.xml> user settings > global settings
          如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。
    • lib-依赖包
      • maven-model-builder-3.6.0包中的pom文件定义了约定。
  • pom.xml
    • groupId 组织机构
    • artfactId 功能命名
    • version 版本号
    • packaging 打包方式 默认jar
    • dependencyManagemement
      • 只能出现在父pom里
      • 统一版本号
      • 声明(子pom中用到再引用)
      • 最佳实践
        • 父pom定义为企业级别或者部门级别控制依赖包版本
    • 其他介绍
  • 版本管理
    • a)1.0-SNAPSHOT
      i.repository 删除
      ii.mvn clean package -U (强制拉一次)
    • b)1.0.0-RELAESE
      主版本号.次版本号.增量版本号-<里程碑版本>
  • 常用命令
    • compile
    • clean
    • test
    • package
    • install
    • deploy
    • -DskipTests #不执行测试用例,但编译测试用例类生成相应的 class 文件至 target/test-classes 下
    • -Dmaven.test.skip=true #不执行测试用例,也不编译测试用例类
  • Dependency Scope
    • compile,缺省值,适用于所有阶段,会随着项目一起发布。
    • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
    • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
    • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
    • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
  • 传递依赖和排除依赖
    • 传递依赖:如果我们的项目引用了一个Jar包,而该Jar包又引用了其他Jar包,那么在默认情况下项目编译时,Maven会把直接引用和间接引用的Jar包都下载到本地。
      • 如何查看传递依赖:mvn dependency:tree > tree.text
    • 排除依赖:如果我们只想下载直接引用的Jar包,那么需要在pom.xml中做以下配置
  • Maven默认的依赖处理策略是什么?
    • 最短路径优先
      Maven 面对 D1 和 D2 时,会默认选择最短路径的那个 jar 包,即 D2。E->F->D2 比 A->B->C->D1 路径短 1。
    • 最先声明优先
      如果路径一样的话, A->B->C1, E->F->C2 ,两个依赖路径长度都是 2,那么就选择最先声明。
  • IDEA中使用Maven Helper处理jar包冲突
  • Maven常用插件
  • 相关资料:《Maven实战》

猜你喜欢

转载自blog.csdn.net/t1g2q3/article/details/85529407