为什么要使用Maven
-
即使不使用Maven我们仍然可以进行B/S结构项目的开发, 从表述层, 业务逻辑层到持久化层再到数据库都有成熟的解决方案——不使用Maven我们一样可以开发项目, 所以我们应该看一下实际需求中有哪些技术的不足.
- 解决jar包的大量重复
- 在JavaEE开发领域, 有大量的第三方框架和工具可以供我们使用, 要使用这些jar包最简单的方法就是复制粘贴到WEB-INF目录下的lib目录下
- 但是这会导致每次创建一个新的工程就需要将jar包重复复制到lib目录下, 从而造成工作区中存在大量重复的文件.
- 而使用Maven后每个jar包只在本地仓库中保存一份, 需要jar包的工程只需要维护一个文本形式的jar包的引 用——我们称之为"坐标", 不仅极大的节约了存储空间, 让项目更轻巧, 更避免了重复文件太多而造成的混乱.
- jar包之间的依赖关系
- jar包往往不是孤立存在的, 很多jar包都需要在其他jar包的支持下才能够正常工作, 我们称之为jar包之间的依赖关系.
- 啊而引入Maven后, Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来, 无需人工参与.
- 处理jar包之间的冲突
- 使用Maven就可以自动的处理jar包之间的冲突问题, 因为Maven中内置了两条依赖原则: 最短路径者优先和先声明者优先
- 获取第三方jar包
- 只需要在你的项目中以坐标的方式依赖一个jar包, Maven就会自动从中央仓库进行下载, 并同时下载这个jar包所依赖的其他jar包.
- 将一个项目拆分成多个工程模块.
- 大型项目已经不可能通过package结构来划分模块, 所以要将项目拆分.
- 利用maven的依赖管理机制, 工程拆分后就可以相互调用和访问.
-
- 上层的依赖于下层, 所以将jar包放在环境模块中.
- 实现项目的分布式部署.
- 在实际生产环境中, 项目规模增加到一定程度后, 可能每个模块都需要运行在独立的服务器上, 我们称之为分布式部署, 这里同样需要用到Maven.
Maven是什么
- 自动化构建工具
- Maven是一款自动化构建工具, 专注服务于Java平台的项目构建和依赖管理.
- 构建的概念
- 构建并不是创建, 我们从三个层面看
- 纯Java代码: .java的源文件要通过编译成.class字节码文件才能执行.
- Web工程: 当我们需要通过浏览器访问Java程序时, 就必须将包含Java程序的Web工程编译的结果部署到服务器上的指定目录, 并启动服务器.
- 实际项目: Web工程中除了Java程序, 图片等静态资源之外, 还包括第三方框架的jar包以及各种各样的 配置文件, 所有这些资源都必须按照正确的目录结构部署到服务器上, 项目才可以运行.
- 综上所述, 构建就是我们以编写的代码等资源, 去生产出一个可运行的项目的过程.
- 构建的步骤
- 清理: 删除以前的编译结果, 为重新编译做好准备.
- 编译: 将Java源程序编译为字节码文件.
- 测试: 针对项目中的关键点进行测试. 确保项目在迭代开发过程中关键点的正确性.
- 报告: 在每一次测试后以标准的格式记录和展示测试结果.
- 打包: 将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署, Java工程对应jar包,Web工程对应war包.
- 安装: 在Maven环境下特指将打包的结果 --— jar包或war包安装到本地仓库.
- 部署: 将打包的结果部署到远程仓库或将war包部署到服务器上运行.
- 自动化构建
- maven可以自动的从构建过程的起点一直执行到终点.
环境搭建
- 解压Maven的核心程序
- 配置环境变量
- M2_HOME: maven的安装地址.
- Path: %M2_HOME%in
- 检查是否安装
- 配置本地仓库
- maven默认的本地仓库: ${user.home}/.m2/repository.
- 自定义本地仓库, 在maven安装目录下confsetting.xml中配.
- setting标签中
- 修改下载源: 用阿里的镜像源 - mirrors标签下
<mirror> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
- 在profiles中注明jdk版本
<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
创建Maven项目
- New Project -> Maven
- 在settings -> Maven中改用自己的maven和setting.xml, 修改下图内容.
- 在settings -> Maven中改用自己的maven和setting.xml, 修改下图内容.
- maven工程结构
- main目录放主程序.
- test目录放测试程序
- java目录放源代码和文件
- resources存放配置文件和资源文件
- pom.xml为核心配置文件, 在里面导入依赖.
- maven的几个基本命令
- 运行maven命令时, 一定要在cmd中进入pom.xml文件所在的目录.
- mvn compile
- 编译main目录下, 将Java源代码编译成.class字节码文件.
- 会自动创建target目录并放进去.
- mvn clean
- 将以前编译得到的旧的class字节码文件删除.
- 其实是自动删除target目录.
- mvn clean compile
- 先删除再编译.
- mvn test-compile
- 编译test目录下java文件
- mvn package
- 将字节码文件打包, 动态web工程打war包, Java工程打jar包
- mvn source:jar
- 将java源代码打包
- mvn install
- 将项目生产的jar包放在仓库中, 以便别的模块调用.
- IDEA中的使用
- 右侧的maven中, 双击即可完成相应的操作.
- 右侧的maven中, 双击即可完成相应的操作.