Maven 快速入门

maven快速入门

一、Maven 介绍

1、啥是 maven ?

    Maven是一个项目管理工具,它包含了这些逻辑:一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个<u>依赖管理系统</u>(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven规范化构建流程:


Alt

2、maven 能做啥?

    用 maven 对项目进行管理,可以帮我们<u>构建工程,管理jar包</u>,编译代码,减小工程占用的空间,还能帮我们自动运行单元测试,打包,生成报表,甚至部署项目等等

Maven依赖管理:


Alt

二、Maven 的使用

1、maven 的下载安装与目录结构

a.下载:

    Maven官网下载

Alt

b.安装:

    与普通软件一样,不要有特殊符号与空格

c.目录结构:

Alt

maven 的目录结构:

bin:存放了 maven 的命令 
boot:存放了一些 maven 本身的引导程序,如类加载器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 本身运行所需的一些 jar 包
至此我们的 maven 软件就可以使用了,当然了前提是你的电脑上之前已经安装并配置好了 JDK

2、maven 环境变量的配置与检查

a.配置MAVEN_HOME:

配置MAVEN_HOME,变量值就是你的 maven安装的路径(bin目录之前一级目录)

Alt

添加到Path路径

Alt

b.检查Maven是否配置成功:

    打开 cmd ,输入 mvn -v 若出现 maven 的版本号,即安装成功

3、maven 本地仓库的配置

    maven 的工作需要从仓库下载一些 jar 包,本地的项目都会通过 maven 软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经有在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。

    默认本地仓库位置在{user.din}/.m2/repository,{user.dir}表示 windows用户目录

若需要修改本地仓库位置,首先打开 conf 目录下的 settings.xml 文件,再找到 <u><localRepository></u> 标签(大概在56行),然后把自己所配置的本地仓库目录填上去,如本人的本地仓库:
<localRepository>D:\apache-maven-3.5.2\maven_repository</localRepository>

    配置完后,终于可以开始使用 maven 了!!!

4、Maven 工程认识

1)maven 工程的目录结构

Alt
Alt

2)maven 工程的运行

    进入一个 HelloWord 的 maven Web工程目录(当前目录有 pom. Xm文件),运行 <u>mvn tomcat:run</u>命令。
然后根据提示打开浏览器输入资源地址(如:localhost:8080/hello_maven/),即可出现运行结果: Hello World。

3)maven 常用命令

a.compile
mvn compile 是 maven 工程的编译命令,作用是将sr/main/ava下的文件编译为 class 文件输出到 target
目录下。
b.test
mvn test 是 maven 工程的测试命令,会执行 src/test/java下的单元测试类
c.clean
mvn clean 是 maven 工程的清理命令,执行 clean 会删除 target目录及内容
d.package
mvn package是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war 包
e.install
mvn install 是 maven 工程的安装命令,执行 instal 将 maven 打成 jar 包或 war 包发布到本地仓库

注:当后面的命令执行时,前面的操作过程也都会自动执行,

三、用 IDEA 开发 Maven 项目

1、maven 在 IDEA 中的配置

a.打开 → Fie → Settings 配置 maven

Alt

b.开始创建工程

    -> Create New Project

c.选择 idea 提供好的 maven 的 web 工程模板

    普通 Java 工程可以选择骨架: maven-archetype-quickstart

Alt

d.填入项目信息

Alt
Alt
Alt

e.点击 Finish,等待工程创建

    IDEA 第一次创建 maven 工程会下载许多依赖包,故时间会比较长

Alt
Alt

控制台出现 BUILD SUCCESS 则说明成功

f.由于目录结构不完整,需要自己手动补齐

    手动添加 src/main/java 目录,如下图右键 man 文件夹 → New → Directory,2019 版 IDEA 的 新建 Maven 工程,增加了自动隐藏 Make Directory → Sources Root 的步骤,会有提示 java 作为自由根目录

Alt
Alt

2、创建一个 Servlet

a.创建 Servlet

src/main/java 创建了一个 Servlet,但报错

Alt

解决方案,就是要将 servlet-api-xxx.jar 包放进来,作为 maven 工程应当添加 servlet 的坐标,从而导入它的 jar

b.在 pom.xml 文件中添加 servlet 的坐标

Alt
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>3.0-alpha-1</version>
</dependency>

坐标定义如下:


<groupId>com.actadd</groupId>


<artifactId>HelloWorld_Maven</artifactId>


<version>1.0-SNAPSHOT</version>

\

<packaging>war</packaging>

坐标来源:

添加依赖需要指定依赖 jar 包的坐标,但是很多情况我们是不知道 jar 包的的坐标,可以通过如下两个网址查询:

http://search.mavenorg/
http://mvnrepository.com

c.依赖范围

A依赖B,需要在A的 pomum文件中添加B的坐标,添加坐标时需要指定依赖范围,依赖范围包
括:

<u>compile</u></u>:编译范围,指 A 在编译时依赖 B ,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。

<u>provided</u>: provided 依赖只有在当 JDk 或者一个容器己提供该依赖之后才使用, provided 依赖在编译和测试时需要,在运行时不需要,比如: servlet api 被 tomcat 容器提供。

<u>runtime</u>: runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包

<u>test</u>:test范围依赖在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用比如:junt 由于运行时不需要所以 test 范围依赖不会被打包。

<u>system</u>: system 范围依赖与 provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径,需要指定 systemPath 磁盘路径, system 依赖不推荐使用。

<scope> 依赖范围 </scope>

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

在项目中添加依赖范围:

Alt

d、设置 jdk 编译的版本为自己安装的版本

Alt

e、继续编写 Servlet


package com.actadd.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @ClassName ServletDemo
 * @Description 在 maven 工程中创建一个 ServletDemo
 * @Author Actadd
 * @Date 21:18 2019/12/15
 * @Version 1.0
 */
public class ServletDemo extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //跳到 hello.jsp 资源
        req.getRequestDispatcher("/hello.jsp").forward(req, resp);
    }
}

3、编写 jsp

a.编写 hello.jsp

Alt

b.记得在 web.xml 中配置 servlet 的访问路径

Alt

c.添加 tomcat 插件

pom.xml 中添加 tomcat 插件

Alt

接下来在运行按钮添加 tomcat 运行配置:

Alt
Alt

添加 tomcat

Alt

右键运行

Alt

4、运行结果

Alt
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • maven快速入门 一、Maven 介绍 1、啥是 maven ? Maven是一个项目管理工具,它包含了这些逻辑...
    Actadd阅读 307评论 0 0
  • 1.什么是Maven? Json Van Zyl是Maven的创始人。 他给我们带来了全新的项目构建方式。 Jas...
    OzanShareing阅读 1,556评论 0 1
  • 第1章 Maven 介绍 什么是 Maven 什么是 Maven Maven 的正确发音是[ˈmevən],而不是...
    强某某阅读 2,366评论 0 25
  • Maven在Java生态体系中可谓是大名鼎鼎。对于初次接触到Maven的同学来说,可能会被它纷繁复杂的配置搞得焦头...
    一米的光年阅读 354评论 0 0
  • 一、概述 Apache Maven is a software project management and co...
    凛_冬_将_至阅读 437评论 0 2