1.maven 依赖管理

Maven 的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成一项困难的任务
maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar包的坐标,这样就很好的避免了 jar 直接引入进来,在需要用到 jar 包的时候,只要查找 pom.xml 文件,再通过 pom.xml 文件中的坐标,到一个专门用于”存放 jar 包的仓库”(maven 仓库)中根据坐标从而找到这些 jar 包,再把这些 jar 包拿去运行。

2.maven工程的目录

src 目录和 pom.xml 是必备的:

maven 依赖 mysql maven依赖管理_maven 依赖 mysql


target --项目输出位置,编译后的 class 文件会输出到此目录src目录:

maven 依赖 mysql maven依赖管理_xml_02

3.maven 的概念模型

maven 依赖 mysql maven依赖管理_jar_03

  • 一个项目生命周期(Project Lifecycle)
  • 使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些过程规范为一个生命周期,如下所示是生命周期的各个阶段:
  • maven 依赖 mysql maven依赖管理_maven_04

  • 插件(plugin)目标(goal)
    maven 管理项目生命周期过程都是基于插件完成的。
    Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
  • 项目对象模型 (Project Object Model):
    一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、插件目标等。
<!-- 此项目运行使用 junit,所以此项目依赖 junit -->
<dependency>
    <!-- junit 的项目名称 公司组织名称 -->
    <groupId>junit</groupId>
    <!-- junit 的模块名称 项目名 -->
    <artifactId>junit</artifactId>
    <!-- junit 版本 -->
    <version>4.9</version>
    <!-- 依赖范围:单元测试时使用 junit -->
    <scope>test</scope>
</dependency>

maven 依赖 mysql maven依赖管理_maven_05

默认引入 的 jar 包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
servlet-api 、jsp-api ------- provided (编译、测试 有效, 运行时无效 防止和 tomcat 下 jar 冲突)
jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
junit ----- test (测试有效)
依赖范围由强到弱的顺序是:compile>provided>runtime>test