[Maven-01]基本使用

1、Maven介绍

1.1 什么是Maven

  Maven 是一个项目管理工具,它包含了一个 项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

1.2 Maven能解决什么问题

  上面一段话说了跟没说一样,还是先知道Maven是干嘛的先。
  我们知道,项目开发不仅仅是写写代码而已,期间会伴随着各种必不可少的事情要做,下面列举几个感受一下:
  1、我们需要引用各种 jar 包,尤其是比较大的工程,引用的 jar 包往往有几十个乃至上百个, 每用到一种 jar 包,都需要手动引入工程目录,而且经常遇到各种让人抓狂的 jar 包冲突,版本冲突。
  2、我们辛辛苦苦写好了 Java 文件,可是只懂 0 和 1 的白痴电脑却完全读不懂,需要将它编译成二进制字节码。好歹现在这项工作可以由各种集成开发工具帮我们完成,Eclipse、IDEA 等都可以将代码即时编译。当然,如果你嫌生命漫长,何不铺张,也可以用记事本来敲代码,然后用 javac 命令一个个地去编译,逗电脑玩。
  3、世界上没有不存在 bug的代码,计算机喜欢 bug就和人们总是喜欢美女帅哥一样。为了追求美为了减少 bug,因此写完了代码,我们还要写一些单元测试,然后一个个的运行来检验代码质量。
  4、再优雅的代码也是要出来卖的。我们后面还需要把代码与各种配置文件、资源整合到一起,定型打包,如果是 web项目,还需要将之发布到服务器,供人蹂躏。
  试想,如果现在有一种工具,可以把你从上面的繁琐工作中解放出来,能帮你构建工程,管理 jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站点,你会心动吗?Maven 就可以解决上面所提到的这些问题。

2、Maven的安装

2.1 下载

  下载地址:https://maven.apache.org/download.cgi
在这里插入图片描述
  把下载好的zip解压到一个没有空格的路径下,解压后目录结构如下(我下载的是3.5.2版本):
在这里插入图片描述
  bin:存放了 maven 的命令;
  boot:存放了一些 maven 本身的引导程序,如类加载器等;
  conf:存放了 maven 的一些配置文件,如 setting.xml 文件;
  lib:存放了 maven 本身运行所需的一些 jar 包。

2.2 配置

  Maven是通过命令来交互的软件,因此需要配置环境变量。
在这里插入图片描述
  jdk的环境变量要保证没有错误,因为maven编译项目是要用上jdk的。
  配置好了后打开cmd输入命令来测试配置是否正确:
在这里插入图片描述
  看到maven的版本和jdk版本和我们配置的一样,就安装成功了。

3、Maven仓库

3.1 介绍

  maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
在这里插入图片描述
  本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找。默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows 用户目录。
  远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。
  中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。

3.2 本地仓库的配置

  这里提供一个本地仓库:https://pan.baidu.com/s/1ZBFwhBBt6RaxU_MQYP8Afw
,提取码:zsv7
  下载后解压在到一个没有中文的路径下,比如D盘根目录下,然后告诉安装的Maven:本地仓库路径。
  打开安装的Maven路径,打开conf/settings.xml文件,配置如下:
在这里插入图片描述

3.3 setting.xml配置文件

  maven 仓库地址、私服等配置信息需要在 setting.xml 文件中配置,分为全局配置和用户配置。
  在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project项目,它作为 maven 的全局配置。
  如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在:${user.dir}/.m2/settings.xml 目录中,${user.dir} 指windows 中的用户目录。
  maven会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。
在这里插入图片描述

4、Maven工程

4.1 创建工程

  创建一个普通Java工程命令:

mvn archetype:generate -DgroupId=cn.klb -DartifactId=maven_helloworld -Dversion=1.1.0 -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeCatalog=internal

  创建一个JavaWeb工程命令:

mvn archetype:generate -DgroupId=cn.klb -Dversion=1.1.0 -DartifactId=maven_javaweb -DarchetypeArtifactId=maven-archetype-webapp 

  命令参数:
  mvn archetype:generate:新建一个Maven工程;
  -DgroupId=cn.klb:工程的公司和项目(有关Java工程命名规则自行百度);
  -DartifactId=maven_helloworld:工程的名字;
  -Dversion=1.1.0:工程的版本号;
  -DarchetypeArtifactId=maven-archetype-quickstart:工程的模板,不同模板创建出来的结构不太一样。

4.2 工程的目录结构

在这里插入图片描述
  作为一个 Maven 工程,它的 src目录和 pom.xml 是必备的。

5、Maven常用命令

5.1 compile

  maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target目录下。
  cmd执行命令:mvn compile
在这里插入图片描述
  查看我们的工程文件夹:
在这里插入图片描述
  可见,字节码文件已经生成,编译完成。

5.2 test

  maven 工程的测试命令 mvn test,会执行src/test/java下的单元测试类。
  cmd 执行 mvn test 执行 src/test/java 下单元测试类,下图为测试结果,运行 1 个测试用例,全部成功。
在这里插入图片描述

5.3 clean

  maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
在这里插入图片描述

5.4 package

   maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于web 工程打成war包。
在这里插入图片描述
在这里插入图片描述

5.5 install

  maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
在这里插入图片描述
  执行后,打开本地仓库,就发现jar包已经放到里面了。
在这里插入图片描述
  从运行结果中,可以看出:当后面的命令执行时,前面的操作过程也都会自动执行。

5.6 指令的生命周期

  Maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
  Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
  Site Lifecycle 生成项目报告,站点,发布站点。

6、IDEA开发Maven项目

  跟Tomcat一样,要idea来开发maven项目,那么就得告诉idea我的maven安装目录。

6.1 配置

在这里插入图片描述
在这里插入图片描述

6.2 创建Maven工程

  第一步,根据web工程模板创建一个web工程:
在这里插入图片描述
  第二步,填写工程信息:
在这里插入图片描述
  第三步,请确认工程信息,直接next即可;
  等待控制台显示创建成功:
在这里插入图片描述
  创建完成后工程的目录结构:
在这里插入图片描述
  因为这个模板创建的项目不完整,把工程补齐:
在这里插入图片描述
在这里插入图片描述
  补齐后如下:
在这里插入图片描述

6.3 测试

  pom.xml导入必要的jar包坐标:

<?xml version="1.0" encoding="UTF-8"?>

<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.klb</groupId>
    <artifactId>maven_web_helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>maven_web_helloworld Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>maven_web_helloworld</finalName>
        <plugins>
        	<!--配置tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>

    </build>
</project>

  在java目录下,建一个cn.klb包,然后新建一个类:

package cn.klb.servlet;

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

/**
 * @Author: Konglibin
 * @Description:
 * @Date: Create in 2020/3/13 18:54
 * @Modified By:
 */
public class ServletDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("/hello.jsp").forward(req,resp);
    }
}

  web.xml:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  
  <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>cn.klb.servlet.ServletDemo</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

  webapp文件夹新建两个jsp:
  index.jsp:

<%--
  Created by IntelliJ IDEA.
  User: Meumax
  Date: 2020/3/13
  Time: 19:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>欢迎页面!</h3>
<a href="/hello">请点击</a>
</body>
</html>

  hello.jsp

<%--
  Created by IntelliJ IDEA.
  User: Meumax
  Date: 2020/3/13
  Time: 19:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>来啦</title>
</head>
<body>
<h3>来啦老弟~</h3>
</body>
</html>

  启动tomcat
在这里插入图片描述
  启动后即可在浏览器输入http://localhost:8080/测试结果。

7、小结

  常用的Maven指令:compile、clean、test、package、install。
  在 pom.xml 中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:

<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>cn.klb</groupId>
<!-- 模块名称 -->
<artifactId>maven_web_helloworld</artifactId>
<!-- 当前项目版本号,snapshot 为快照版本即非正式版本,release为正式发布版本 -->
<version>1.0-SNAPSHOT</version>
<!--打包类型-->
<!--jar:执行 package 会打成 jar 包-->
<!--war:执行 package 会打成 war 包-->
<!--pom :用于 maven 工程的继承,通常父工程设置为 pom-->
<packaging>war</packaging>

  pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:

<project > :文件的根节点 .
<modelversion > : pom.xml 使用的对象模型版本
<groupId > :项目名称,一般写项目的域名
<artifactId > :模块名称,子项目名或模块名称
<version > :产品的版本号 .
<packaging > :打包类型,一般有 jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档。
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值