Maven个人总结

本文详细介绍了Maven的核心概念,包括POM的结构、生命周期、插件、依赖管理和继承。Maven的生命周期分为clean、default和site三个阶段,每个阶段由特定插件的目标实现。依赖管理中详细阐述了各种范围如compile、test等的使用场景。此外,还讨论了Maven的继承和聚合特性,以及如何解决依赖冲突和管理依赖版本。
摘要由CSDN通过智能技术生成

Maven个人总结 以及一些相关的配置文件

1. 核心概念 pom 约定的项目结构 插件和目标
   生命周期 仓库 坐标 依赖 继承 聚合

2. pom模型版本 modelVesion
   项目坐标:groupId artifactId version packing
   父模块和子模块:parent and modules
   项目依赖:denpendencies
   项目构建:build
   属性和属性文件:properties profiles
3.maven的生命周期
  clean Lifecycle 在进行真正的构建前进行的一些清理工作
  Default Lifecycle 构建核心部分 编译 测试 打包 安装 部署等
  Site LifeCycle 生成项目报告 站点 发布地点等
  Default 生命周期:
  compile 编译项目的源代码
  test-compile 编译测试源代码
  test 使用适合的单元测试框架运行测试 这些测试代码不会被打包或部署
  package 接受编译好的代码 打包完成可发布的格式 如JAR
  install 将包安装至本地仓库 以便让其他项目依赖
  在运行任何一个阶段的时候 它前面的所有阶段都会运行
4. Maven插件和目标
  编译 测试 打包 部署
  maven生命周期的每一个阶段的具体实现都是由maven插件实现的
5. maven坐标
   groupId 定位到公司开发的项目 域名倒叙.项目名
   artifactId 定位到项目中的模块 模块名
   version 指定的模块版本 无
6.Maven的依赖管理
  compile:main 可以 log4j
           test 可以
           lib 无
  test    :main 不可以 junit
           test 可以
           lib  不可以
  provided :main 可以  servlet-api lombok
            test 可以
            lib 不可以
  runtime  :main 不能 JDBC驱动类
            test 可以
            lib  可以
  system   :可以
            可以
            不可以
  import 都不行

7. 依赖的传递
   项目项目B  依赖项目C
   <dependencies>
       <dependency>
           <groupId>com.atguigu.maven</groupId>
           <artifactId>pro04_maven_moduleC</artifactId>
           <version>1.0-SNAPSHOT</version>
       </dependency>
   </dependencies>
   <dependencies>
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>3.1.0</version>
           <scope>provided</scope>
       </dependency>
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.11</version>
           <scope>test</scope>
       </dependency>
       <dependency>
           <groupId>log4j</groupId>
           <artifactId>log4j</artifactId>
           <version>1.2.14</version>
       </dependency>
   </dependencies>
   依赖的冲突:
   最短路径优先
   路径相同的先声明优先
   依赖的排除:
   <exclusions>
     <exclusion>
     <gropuId>
     <artifactId>
     <exclusion>
   <exclusions>

   依赖的统一管理:
   <properties>
     <version>****</version>
   <properties>

   <dependencies>
     <denpendency>
       <groupId>*****
       <artifactId>****
       <version>${****}
     <denpendency>
   <denpendencies>
8. maven 继承
   父项目
   <packing>pom</packing>
   子项目
   <parent>
     <groupId>
     <artifactId>
     <version>
   </parent>
   + 问题:子项目不认父项目

   方法1: 将父项目打包上传到本地库

   方法2:如果父项目没有打包上传到本地库,需要通过relativePath指定父项目的pom.xml文件的位置
   <parent>
       <groupId>com.atguigu.maven</groupId>
       <artifactId>pro05_parent</artifactId>
       <version>1.0-SNAPSHOT</version>
       <relativePath>../pro05_parent/pom.xml</relativePath>
   </parent>
   依赖管理:
    父项目:在父项目中通过dependencyManagement指定的依赖,只是声明,父项目中本身也不具有。子项目自然也无法继承
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    子项目:在子项目中重新指定需要的依赖,删除范围和版本号;如果需要不同的版本,就需要指定版本。
9. 聚合
   父项目
   <packaging>pom</packaging>
   <modules>
       <module>product</module>
       <module>payment</module>
       <module>order</module>
   </modules>
   子项目
   <parent>
       <artifactId>myshopping</artifactId>
       <groupId>com.atguigu.maven</groupId>
       <version>1.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>order</artifactId>
   测试聚合
   聚合关系其实是一个大项目包含多个子项目,
   对父项目进行clear、compile、install等命令,
   是对所有子项目进行clear、compile、install命令。
   但是如果对一个子项目进行maven操作,不影响其他子项目。
   和继承一样,可以在父项目中通过dependencyManagement来管理依赖
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值