Maven

Maven


项目构建过程

  • 翻译为“专家”,“内行” //公司对产品构建化程度比较高,就会用,Maven 是跨平台的项目管理工具。主要服务于基于 Java 平台的项目构建,依赖管理和项目信息管理。
  • 什么是理想的项目构建? -次重要
  • 高度自动化,跨平台,可重用的组件,标准化的
  • 清理代码 eclipse-project-clean / project-build autonacally 自动编译代
  • / 测试 junit / 生成报告 / 打包 – 项目右键 – export , 这些所有的动
  • 作 maven 一步命令帮我们搞定
  • 什么是依赖?为什么要进行依赖管理? -最重要
  • 自动下载,统一依赖管理
  • 直接依赖:代码里 import 了 spring,这里就需要 spring 的 jar 包
  • 间接依赖:导入 spring 的 jar 包,它同时依赖其他 jar 包,这些替他的 jar
  • 包,就是间接依赖的 jar 包
  • Maven 的依赖管理,能够让我们 构件化,通用编码生成 jar 包, 很快的组
  • 装,1 个个的模块打成 1 个个的 jar 包 核心
  • 有哪些项目信息? -后重要
  • 项目名称描述等,开发人员信息,开发者信息等

为什么使用 Maven ?

  • IDE?Eclipse? 开发工具
  • 手工操作较多,编译、测试、部署等工作都是独立的,很难一步完成 ,
  • 离散,不规范操作
  • 每个人的 IDE 配置都不同,很容易出现本地代码换个地方编译就出错
  • Ant? Maven 前,老的一个模块管理工具 – 也是 apache 的
  • 没有一个约定的目录结构 – 真实项目中的项目结构 java config target
  • 必须明确让 ant 做什么,什么时候做,然后编译,打包
  • 没有生命周期,必须定义目标及其实现的任务序列
  • 没有集成依赖管理
  • 注意:导入的 jar 包的编译版本,和实际应用的编译版本 , jar 包下 Win-INF 下的
  • MANIFEST.MF jar 包信息文件

Maven

  • 拥有约定,知道你的代码在哪里,放到哪里去
  • 拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,
  • 打包等构建过程
  • 只需要定义一个 pom.xml,然后把源码放到默认的目录,Maven 帮你处
  • 理其他事情
  • 拥有依赖管理,仓库管理

安装 Maven

  • 下载 Maven
  • 地址:http://maven.apache.org/download.html
  • 版本:Maven3.0
  • 安装 Maven
  • 检查 jdk 安装的情况(要 1.6 版本以上):
  • Echo %JAVA_HOME% -相当于我们 java 的输出命令
  • Java –version – 反应出了 版本 ; 及说明已经配置了 path
  • 注意:配置的环境变量,有上下 2 块,上边:当前用户的 下边:全局变量
  • 解压设置系统环境变量,MAVEN_HOME,设置环境变量 Path
  • 验证安装是否成功,打开 cmd 窗口,敲入 mvn –v 查看

Maven 安装目录分析

  • bin:含有 mvn 运行的脚本
  • boot:含有 plexus-classworlds 类加载器框架
  • conf:含有 settings.xml 配置文件
  • lib:含有 Maven 运行时所需要的 java 类库
  • LICENSE.txt, NOTICE.txt, README.txt 针对 Maven 版本,第三方软件

项目目录分析

  • src/main/java —— 存放项目的.java 文件
  • src/main/resources —— 存放项目资源文件,spring,hibernate 配置文件
  • src/test/java —— 存放所有测试.java 文件,如 JUnit 测试
  • src/test/resources —— 测试资源文件
  • target —— 项目输出位置 -加载时会自动创建,编译好的放在这里
  • pom.xml – 配置信息

项目构建pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion> //版本号
    <groupId>cn.com.maven</groupId> //包名
    <artifactId>Hello</artifactId> //工程名
    <version>0.0.1-SNAPSHOT</version>
    <name>Hello</name>
    <dependencies> 依赖
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency> 
    </dependencies>
</project>

Maven 坐标

  • 什么是坐标?
  • 在平面几何中坐标(x,y)可以标识平面中唯一的一点
  • Maven 坐标主要组成 -4 维的坐标
  • groupId:定义当前 Maven 项目隶属项目 – 一般包名
  • artifactId:定义实际项目中的一个模块 – 主类名
  • version:定义当前项目的当前版本 -版本
  • packaging:定义该项目的打包方式 -jar war
  • 通过坐标就可以去定义 和 查找 相关 jar 包
  • Maven 为什么使用坐标?
  • Maven 世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统
    一规范

依赖管理

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency> 
</dependencies>

其中依赖范围 scope 用来控制依赖和编译,测试,运行的 classpath 的关系. 主要的是
三种依赖关系如下:

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

传递性依赖:
见传递依赖图
传递性依赖原则:
A–>B
A–>C
1.路径最近者优先
2.路径相同,第一声明者优先
注意:
1.dependencyManagement 中定义的依赖子 module 不会共享
2.dependencies 中定义的依赖子 module 可以共享
可选依赖不被传递
依赖优化:mvn dependency:list


仓库管理

  • 何为 Maven 仓库?
  • 用来统一存储所有 Maven 共享构建的位置就是仓库
  • Maven 仓库布局
  • 根据 Maven 坐标定义每个构建在仓库中唯一存储路径
  • 大致为:groupId/artifactId 主类/version/artifactId-version.packaging
  • http://search.maven.org
  • 仓库的分类
  • 本地仓库
  • ~/.m2/repository/
  • 每个用户只有一个本地仓库
  • 远程仓库
  • 中央仓库:Maven 默认的远程仓库 -central
  • http://repo1.maven.org/maven2
  • 私服:是一种特殊的远程仓库,它是架设在局域网内的仓库 –
  • 局域网
  • 镜像:用来替代中央仓库,速度一般比中央仓库快 ,

仓库配置

增加一个仓库,在项目 Pom.xml 中添加如下:


central
Maven Repository Switchboard
http://repo1.maven.org/maven2
default

false



如果仓库改为 maven 私服地址的话,需要在项目根目录下面添加


central
http://localhost:8000/nexus/content/groups/public
true
true




central
http://localhost:8000/nexus/content/groups/public
true
true


生命周期

  • 何为生命周期?
  • Maven 生命周期就是为了对所有的构建过程进行抽象和统一
  • 包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤
    MAVEN 三大生命周期
  • clean:清理项目的
  • default:构建项目的
  • site:生成项目站点的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值