Maven基础知识


Maven常用命令

# 清理
mvn clean
# 编译主程序
mvn compile
# 编译测试程序
mvn test-compile
# 执行测试
mvn test
# 打包
mvn package
# 安装 
mvn install
# 生成站点
mvn site

坐标

在Maven中,由groupid、artifactid、version来唯一确定一个Maven工程。

仓库

仓库分类

  • 本地仓库
  • 远程仓库
    • 私服
    • 中央仓库
    • 中央仓库镜像
      仓库中保存的内容:Maven工程
  • Maven自身所需要的插件
  • 第三方框架或工具的jar包
  • 我们自己开发的Maven工程

依赖

Maven解析依赖信息时会到本地仓库中查找被依赖的jar包。对于我们自己开发的Maven工程,使用mvn install命令安装后就可以进入仓库。

依赖的范围

  • compile
  • test
  • provided
依赖的范围 对主程序是否有效 对测试程序是否有效 是否参与打包 是否参与部署
compile 有效 有效 参与 参与
test 无效 有效 不参与 不参与
provided 有效 有效 不参与 不参与

compile和provided比较:compile在开发、部署、运行阶段都提供依赖,provided只在开发阶段提供依赖。

依赖具有传递性。非compile范围的依赖不能传递。

依赖排除:使用exclusions排除不需要的jar包。

依赖原则(解决工程之间的jar包冲突)

  • 路径最短者优先
  • 路径相同时先声明者优先

统一管理jar包的版本

  • 在properties标签内使用自定义标签统一声明版本号
  • 在需要统一版本的位置,使用${自定义标签名}引用声明的版本号

继承

  • 创建一个Maven工程作为父工程,打包方式为pom
  • 在子工程中声明对父工程的引用
  • 由父工程统一管理依赖,子工程添加依赖时无需指定版本

聚合

  • 一键安装各个模块工程
  • 在总的聚合工程中的pom.xml文件使用modules标签配置即可

生命周期

Maven生命周期定义了各个构建环节的执行顺序。

Maven有三套相互独立的生命周期

  • Clean Lifecycle:在进行真正的构建之前进行一些清理工作
  • Default Lifecycle:构建的核心部分,编译、测试、打包、安装、部署等
  • Site Lifecycle:生成项目报告、站点,发布站点

插件和目标

  • 生命周期的各个阶段仅仅定义了要执行的任务是什么
  • 各个阶段和插件的目标是相对应的
  • 相似的目标由特定的插件来完成

自动部署

pom.xml文件



    web
    
        
            org.codehaus.cargo
            cargo-maven2-plugin
            1.2.3
            
                
                
                    
                
                
                
                    8001
                
            
            
            
                
                    cargo-run
                    install
                    
                        run
                    
                
            
        
    

命令mvn deploy

Maven仓库

https://mvnrepository.com/