DAY02-maven的使用

一、 maven概述

maven是什么

Apache组织开发的一个开源跨平台的集构建、依赖管理、项目管理于一身的工具(跨平台体现在不同操作系统上都能使用)

为什么要使用maven

解决构建部署项目,第三方依赖比较繁琐的问题,进行统一管理与配置,提供了一个标准的最佳实践目录结构,更高效的来开发管理项目

实现流程

maven实现流程

可以重复利用之前使用的jar,不用每次去下载

maven项目结构

maven项目结构

二、 maven安装

1、检查JDK 的版本与需要的maven版本

Maven 不同的版本对 JDK 是有要求的,具体请看官网https://maven.apache.org/docs/history.html

2、安装

  • 把apache-maven-x.x.x-bin.zip解压到目录中(目录路径最好不要有空格和中文)。

3、配置环境变量

  • 配置系统环境变量,MAVEN_HOME,指向maven的根目录;
  • 配置环境变量Path,将%MAVEN_HOME%\bin追加到Path中。

4、验证Maven安装

mvn –v ,如下效果即代表安装成功


image.png

三、 maven相关的命令

  • 需要在cmd下切换到项目所在目录
    mvn compile:编译
    mvn clean:清除 :字节码有问题破损时使用,会清除项目下的target文件
    mvn test:测试
    mvn package:打包
    mvn install:打包,本地仓库也放一份

四、Maven 设置

1、本地仓库

  • 运行过 Maven 命令才会在你的用户目录生成一个.m2目录,该目录下有个目录名 repository,这个就是所谓的本地仓库,主要存放是一些下载的jar文件。


    本地仓库
  • 本地仓库默认位置在 用户目录/.m2/repository,本地仓库不建议在系统盘
    本地仓库修改为其他路径<localRepository>本地仓库路径</localRepository>,修改后用户下的本地仓库文件夹repository可以删除

    本地仓库路径

2、配置中央仓库镜像

配置一个中央仓库的镜像来降低下载失败的概率

  • setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- 本地仓库地址 -->
    <localRepository>D:\codeSoftware\Maven\mvn-rep</localRepository>
    <mirrors>
        <!-- 阿里仓库镜像 -->
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
</settings>

五、Eclipse 中 Maven 的配置

1、配置安装的 Maven

image.png

2、设置 setttings.xml和本地仓库

image.png

3、下载源码设置

image.png

六、 搭建基于Maven构建的JavaSE项目

1、创建项目

image.png
image.png
image.png

2、pom.xml 文件

用于填写项目信息,打包方式,添加依赖等。


image.png

3、添加依赖

  • 建索引添加依赖
    显示索引菜单


    image.png

    image.png

    禁用远程仓库索引


    image.png

    建立本地仓库索引
    image.png

    在pom.xml 右键添加依赖
    image.png

    在添加依赖的对话框中选择需要添加的依赖


    image.png
依赖有问题的解决方法

网站搜索拷贝添加依赖

访问不到电脑使用手机的热点试试,或者翻墙。
网站:官网 https://mvnrepository.com/
阿里 https://maven.aliyun.com/mvn/search

image.png
image.png
image.png
image.png

使用Maven命令

  • 清除


    image.png
  • 打包
    菜单自有的命令有限,没有打包的菜单,所以可以右键项目:


    image.png

    image.png

    image.png

七、搭建基于Maven构建的JavaWeb项目

1、创建项目

image.png

此时注意打包方式为war


image.png

2、添加web.xml

image.png
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
</web-app>

3、修改项目编译运行版本

<plugin>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
   <source>1.8</source><!-- 更新项目(Maven | Update Project)之后,会修改项目的编译版本 -->
   <target>1.8</target><!-- 更新项目之后,会修改项目的运行版本 -->
   <encoding>utf-8</encoding><!-- 更新项目之后,Java 编译器读取你的文件用的编码 -->
   </configuration>
</plugin>
image.png

之后右键项目更新项目


image.png

4、添加依赖

image.png

5、编写Servlet与JSP

image.png

image.png

6、配置Tomcat插件

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <port>8080</port> <!-- 端口 -->
        <path>/</path> <!-- 上下路径 -->
        <uriEncoding>UTF-8</uriEncoding> <!-- 针对 GET 方式乱码处理 -->
    </configuration>
</plugin>

7、启动Tomcat

  • 常见错误:
  1. 端口占用:(未正常关闭服务器,多次点击启动,可进任务管理器关闭javase进程)
    Netstat命令
      1)、“运行”中输入cmd;
      2)、在命令行中输入netstat -ano,得到端口号对应的PID;
  2. 路径问题:


    image.png
  • 右键要启动的项目
    image.png

    如下输入tomcat7:run,Debug 启动。tomcat7为<artifactId>tomcat7-maven-plugin</artifactId>里的前缀,要完全一致
    image.png

八、概念解释

数学中的坐标在空间中,使用 X、Y、Z 三个向量可以唯一的定位空间中的任意一个点。

1、Maven中的坐标

标识项目在仓库中的位置。主要由下面构成:
groupId:项目名称,一般使用公司或组织域名倒写,域名具有唯一性,区分不同公司;
artifactId:项目中 Maven 项目/模块名称,区分同一个公司的项目;
version:项目版本,区分同一个项目不同时期的特点。


image.png

2、依赖

打包时正在校验


image.png

<scop>

  • Maven在编译,测试,运行的时候,各需要一套classpath(比如编译的时候会有编译的 classpath,测试的时候会有测试的 classpath)。
    scope表明该依赖的项目和三个classpath 的关系,即表示依赖什么阶段起作用,什么阶段

scope 主要可选值:
a、compile:默认,适用于所有阶段,会随着项目一起发布,在编译,测试,运行时都有效;
b、provided:编译和测试阶段使用;典型的如 servlet-api.jar,打包时不需要,容器来提供;
c、runtime:测试和运行阶段使用,用于接口和实现分离,典型的如 jdbc 具体驱动实现;
d、test:测试阶段使用,不会随项目发布,如 junit。

image.png

image.png

传递性

Maven的依赖是具有传递性的,
比如 A -> B,B -> C,那么A间接的依赖于C,这就是依赖的传递性
依赖的传递性可以解决依赖繁琐的问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容