Maven主要概念

Maven是什么

Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。

Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。

Maven的优势

  • 项目设置遵循统一的规则。
  • 任意工程中共享。
  • 依赖管理包括自动更新。
  • 一个庞大且不断增长的库。
  • 可扩展,能够轻松编写 Java 或脚本语言的插件。
  • 只需很少或不需要额外配置即可即时访问新功能。
  • 基于模型的构建
  • 项目信息的一致性
  • 发布管理和发布单独的输出
  • 向后兼容
  • 并行构建
  • 更好的错误报告

目录结构

└─src                      源码
    ├─main                 主要
    │  ├─java              java源码
    │  │  └─com   
    │  │     └─build  包名
    │  └─resources         资源: 配置文件
    └─test                 测试相关
        └─java
            └─com
               └─build
pom.xml

生命周期

  • validate 校验
    验证项目是否正确且所有必须信息是可用的
  • initialize 初始化
    执行构建生命周期的主任务之前进行初始化
  • compile 编译
    源代码编译在此阶段完成
  • test 测试
    使用适当的单元测试框架(例如JUnit)运行测试。
  • package 打包
    创建JAR/WAR包如在 pom.xml 中定义提及的包
  • integrationTest 集成测试
    执行真正的集成测试
  • install 安装
    安装打包的项目到本地仓库,以供其他项目使用
  • deploy 部署
  • 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

坐标

  • gourpId
    组织名,公司网址的反写 + 项目名称
  • artifactId
    项目名-模块名
  • version
    版本
  • scope
    依赖范围
  • classifier
    标识符
  • type
    类型

依赖管理

依赖传递

功能功能描述
依赖调节决定当多个手动创建的版本同时出现时,哪个依赖版本将会被使用。 如果两个依赖版本在依赖树里的深度是一样的时候,第一个被声明的依赖将会被使用。
依赖管理直接的指定手动创建的某个版本被使用。例如当一个工程 C 在自己的依赖管理模块包含工程 B,即 B 依赖于 A, 那么 A 即可指定在 B 被引用时所使用的版本。
依赖范围包含在构建过程每个阶段的依赖。
依赖排除任何可传递的依赖都可以通过 “exclusion” 元素被排除在外。举例说明,A 依赖 B, B 依赖 C,因此 A 可以标记 C 为 “被排除的”。
依赖可选任何可传递的依赖可以被标记为可选的,通过使用 “optional” 元素。例如:A 依赖 B, B 依赖 C。因此,B 可以标记 C 为可选的, 这样 A 就可以不再使用 C。

依赖范围

传递依赖发现可以通过使用如下的依赖范围来得到限制:

依赖范围**(scope)**编译时依赖测试时依赖运行时依赖是否打入包例子
compileYYYYSLF4J
providedYYYNSERVLET-API
testNYNNJUNIT
runtimeNYYYMYSQL JDBC DRIVER
systemYYYY有nexus后,不用system

仓库

Maven仓库
在 Maven 的术语中,仓库是一个位置(place)。
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

Maven 仓库有三种类型:

  • 本地(local)
  • 中央(central)
  • 远程(remote)

Maven 阿里云(Aliyun)仓库
Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。

常用命令

  • 创建名为myweb的web项目
mvn archetype:generate  -DgroupId=com.woniuxy.cq  -DartifactId=myweb -Dversion=1.0
  • 修改web.xml的头部,升级为3.0
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.0">
  • 加一个java目录
D:\>cd D:\maven\pmt\myweb\src\main

D:\maven\pmt\myweb\src\main>mkdir java
  • 给pom.xml添加了祖传的Servlet依赖
<!--▽Servlet规范相关▽-->
<!-- servlet API支持 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
<!-- jstl支持 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.1.2</version>
    <type>jar</type>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
    <type>jar</type>
</dependency>
<!--△Servlet规范相关△-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值