Why使用Maven:

  • 一个项目就是一个工程
    如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程
  • 项目中使用jar包,需要“复制”、“粘贴”项目的lib中
    同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。借助于maven,可以将jar包保存在“仓库”中,不管在哪个项目只要使用引用即可就行
  • jar包需要的时候每次都要自己准备好或到官网下载
    借助于maven,可以使用统一的下载jar包规范方式
  • jar包版本不一致的风险
    不同的项目在使用jar包的时候,有可能会导致各个项目的jar包版本不一致,导致未执行错误。借助于maven,所有的jar包都放在“仓库”中,所有的项目都使用仓库的一份jar包。
  • 一个jar包依赖其他的jar包需要自己手动加入项目中
    FileUpload组件->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar
    极大的浪费了我们导入包的时间成本,也极大的增加了学习成本。借助于maven,它会自动的将依赖的jar包导入进来。
  • 编译程序,把java编译为class
  • 测试代码是否正确
  • 打包文件(jar、war)
  • 部署项目

Maven是what:

  • maven 是一款服务于java平台的自动化构建工具
  • 构建
    构建定义:把动态的Web工程经过编译得到的编译结果部署到服务器上的整个过程。
    编译:java源文件[.java]->编译->Classz字节码文件[.class]
    部署:最终在sevlet容器中部署的不是动态web工程,而是编译后的文件




maven install 打jar包时替换类文件中的变量 maven项目更换jar包版本_java


  • 构建各环节
  • 清理clean:将以前编译得到的旧文件class字节码文件删除
  • 编译compile:将java源程序编译成class字节码文件
  • 测试test:自动测试,自动调用junit程序
  • 报告report:测试程序执行的结果
  • 打包package:动态Web工程打War包,java工程打jar包
  • 安装install:Maven特定的概念—–将打包得到的文件复制到“仓库”中的指定位置
  • 部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行
  • maven核心概念
  • POM :一个文件,pom.xml (pom翻译就是项目对象模型)maven把一个项目当做一个模型使用,控制maven构建项目过程,管理jar包依赖
  • 约定的目录结构:maven项目的目录和文件的位置都是规定的
  • 坐标:是一个唯一的字符串,用来表示资源
  • 依赖管理:管理你的项目可以使用jar文件
  • 仓库管理:就是资源存放的位置
  • 生命周期:maven工具构建项目的过程
  • 插件和目标:执行maven构建的时候用的工具是插件
  • 继承
  • 聚合

安装

  • 下载maven


maven install 打jar包时替换类文件中的变量 maven项目更换jar包版本_jar包_02


  • 配置环境变量
  • 验证mvn -v 查看maven版本

IDEA 配置Maven

  • Settings


maven install 打jar包时替换类文件中的变量 maven项目更换jar包版本_maven_03


maven install 打jar包时替换类文件中的变量 maven项目更换jar包版本_maven_04


VM Options : -DarchetypeCatalog=internal

  • Other Settings(配置的和Settings 一样)


maven install 打jar包时替换类文件中的变量 maven项目更换jar包版本_maven_05