Maven基本知识

  • 2大功能

    • 管理依赖:依赖指的就是jar包
    • 项目构建:它是一个项目管理、构建工具
  • 常用命令

    • mvn compile 编译主目录的文件
    • mvn clean 清除已经编译好的target目录中的文件(class文件)
    • mvn test 编译并运行test目录的代码
    • mvn package 打包
    • mvn install 把项目发布到本地仓库
    • tomcat: run 一键启动

依赖管理

  1. 依赖范围,scope

    • compile: 默认编译依赖范围。对于编译、测试、运行三种classpath都有效
    • test:测试依赖范围。
    • provided:已提供依赖范围。对于编译、测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
    • runtime:运行时提供。例如:jdbc驱动
  2. 依赖传递

    • 当第二依赖的范围是compile的时候,传递性依赖的范围与第一直接依赖的范围一致。
    • 当第二直接依赖的范围是test的时候,依赖不会得以传递。
    • 当第二依赖的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同样为 provided;
    • 当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递的依赖范围为runtime;
  3. 可选依赖
    Optional标签标示该依赖是否可选,默认是false。如果为true,则表示该依赖不会传递下去,如果为false,则会传递下去。

     
       com.itheima.maven
       MavenFirst
       0.0.1-SNAPSHOT
       true
     
    
  4. 排除依赖,Exclusions标签可以排除依赖

    
     
    com.itheima.maven
    MavenSecond
    0.0.1-SNAPSHOT
    
    
      
        com.itheima.maven
        MavenFirst
      
    

生命周期

生命周期可以理解为项目构建的步骤集合,maven有三个生命周期:clean生命周期、default生命周期、site生命周期

生命周期是由多个阶段(Phase)组成。每个阶段都是一个完整的功能,比如mvn clean中的clean就是一个阶段。

  1. Clean生命周期

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

  2. Default生命周期(重点)

    validate
    generate-sources
    process-sources
    generate-resources
    process-resources 复制并处理资源文件,至目标目录,准备打包。
    compile 编译项目的源代码。
    process-classes
    generate-test-sources
    process-test-sources
    generate-test-resources
    process-test-resources 复制并处理资源文件,至目标测试目录。
    test-compile 编译测试源代码。
    process-test-classes
    test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
    prepare-package
    package 接受编译好的代码,打包成可发布的格式,如 JAR 。
    pre-integration-test
    integration-test
    post-integration-test
    verify
    install 将包安装至本地仓库,以让其它项目依赖。
    deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

  3. Site生命周期

    pre-site 执行一些需要在生成站点文档之前完成的工作
    site 生成项目的站点文档
    post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
    site-deploy 将生成的站点文档部署到特定的服务器上

Maven插件

 
     
       
       
          org.apache.maven.plugins
          maven-compiler-plugin
          
            1.8
            1.8
            UTF-8
          
       
     
  

继承

父工程抽取版本号:的子标签可以任意指定

  
     4.9
  
 
  
     
       
          junit
          junit
          ${junit.version}
       
     
  

在工程中使用父工程管理的版本号时不需要指定version

  
     junit
     junit
  

你可能感兴趣的:(maven)