热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Maven入门、什么是Maven、如何使用Maven、Maven的项目结构、简单的Mavenjava项目、Maven常用命令、Maven项目之间的引用、Maven依赖的传递、可选、排除day01

目录第一节Maven入门1.1什么是Maven1.2如何使用Maven第一步:下载Maven第二步:配置Maven的环境变量第三步:了解什


目录

  • 第一节 Maven入门
    • 1.1 什么是Maven
    • 1.2 如何使用Maven
      • 第一步:下载Maven
      • 第二步:配置Maven的环境变量
      • 第三步:了解什么是Maven仓库
      • 第四步:修改setting.xml配置文件
    • 1.3 Maven的项目结构
    • 1.4 在intellij idea中创建一个简单的javaMaven项目
    • 1.5 Maven的常用命令
      • mvn compile
      • mvn clean
      • mvn test
      • mvn package
      • mvn install
      • mvn 组合命令
    • 1.6 一个项目引用另一个项目
  • 第二节 Maven的核心概念
    • 2.1 坐标(gav)
    • 2.2 坐标的查找
    • 2.3 依赖管理
      • scope 依赖范围
      • 依赖传递
      • 可选依赖
      • 排除依赖


第一节 Maven入门


1.1 什么是Maven


  • Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
  • Maven是跨平台的项目管理工具,主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
  • 相当于iOS cocoapods
  • Maven的好处:
    1. 方便jar的管理
    2. 不需要上传jar包到svn
    3. 以后项目中要使用jar包可以使用Maven来管理(jar包不在项目中,在Maven仓库),只需要引入Maven依赖(jar包坐标),使得多个项目只需要使用一套jar即可(节省磁盘空间),项目完成后使用Maven命令将(web)项目打成war包也会把项目所需的jar包含进去。
    4. 而且jar包的版本问题也容易解决,修改依赖即可

1.2 如何使用Maven


第一步:下载Maven


  • Maven无需安装,下载后解压即可
  • Maven下载地址:https://archive.apache.org/dist/maven/maven-3/.
  • 这里使用的是3.5.0版本,也可以使用最新的3.6.3
    在这里插入图片描述
  • .tar.gz是linux系统和macOS下使用
    在这里插入图片描述
  • 解压到自己想要放的位置
    在这里插入图片描述

第二步:配置Maven的环境变量


  • 配置环境变量的目的是为了在dos中快捷、方便的使用Maven的一些命令
  • 右键此电脑->属性->高级系统设置->高级->环境变量
    在这里插入图片描述
  • 在系统变量中新建MAVEN_HOME
    在这里插入图片描述
  • 系统变量中的选中Path,编辑
    在这里插入图片描述
  • 配置完成后一路确定即可
  • (Win+R)输入cmd,打开终端,在里面输入 mvn -v(或mvn -verison),类似如下画面即Maven环境变量配置成功
    在这里插入图片描述

第三步:了解什么是Maven仓库


  1. Maven本地仓库:一般用户只会为自己配置一个本地仓库
    • Maven本地仓库是用来干啥的?
      其实就是用来存放网上下载到本地的jar包。
    • Maven本地仓库的路径默认情况下是在用户目录下 C:\User\xxx\.m2\repository 可修改
  2. Maven远程仓库【私服】
    私服:是一种特殊的远程仓库,它是架设在局域网内的仓库,nexus就是用来创建maven的私服的,也就是提高依赖的下载速度,用阿里云的私服就好(一般公司有自己的私服)
  3. Maven中央仓库
    Maven默认的远程仓库,不包含版权资源,存放了几乎所有的开源jar(但是一般中央仓库的地址下载都比较慢,使用国内阿里云的中央仓库即可)
    在这里插入图片描述

第四步:修改setting.xml配置文件


  • 配置本地的Maven仓库路径,在Maven解压文件目录下的conf/settings.xml中修改
    在这里插入图片描述
  • 查看setting.xml配置文件,看到Default:(默认)是在用户目录下的.m2\repository中
    在这里插入图片描述
  • 复制下面一行,添加本地存放路径(这样配置后,默认配置将不再生效,jar包将存放在设置的路径下,找本地jar的时候,也先在这里面找)

<localRepository>D:\Maven_localRepositorylocalRepository>

  • 继续往下看&#xff0c;maven默认会从上面的服务器(中央仓库) 下载 jar包到本地&#xff0c;由于是国外的服务器&#xff0c;下载jar的速度相对来说会很慢&#xff0c;不使用它&#xff0c;使用国内比较好的阿里云服务器下载jar&#xff0c;速度会快不少
    在这里插入图片描述

<mirror><id>aliyunid><mirrorOf>aliyunmirrorOf><name>aliyun Mavenname><url>http://maven.aliyun.com/nexus/content/groups/public/url>mirror>

  • 打开终端&#xff0c;输入 mvn help:system 回车执行&#xff08;出现以下页面就表示下载完成&#xff09;
  • &#xff08;mvn help:system执行Maven的帮助系统下载一些基本的jar和插件&#xff09;
    在这里插入图片描述
    在这里插入图片描述

1.3 Maven的项目结构


  • 普通maven java项目的结构

ProjectName|-src| |-main| | |-java —— 核心代码部分.java| | |-resources —— 配置文件部分&#xff08;spring、hibernate、mybatis、struts2等&#xff09;| |-test| |-java —— 存放所有测试.java文件&#xff0c;如JUnit测试类| |-resources —— 测试资源配置文件|-target —— 目标文件输出位置例如.class、.jar、.war文件|-pom.xml —— maven项目核心配置文件

  • maven javaWeb项目的结构&#xff08;多了一个webapp存储页面资源&#xff09;

ProjectName|-src| |-main| | |-java —— 核心代码部分.java| | |-resources —— 配置文件部分&#xff08;spring、hibernate、mybatis、struts2等&#xff09;| | |-webapp —— 页面资源、js、css、图片等| |-test| |-java —— 存放所有测试.java文件&#xff0c;如JUnit测试类| |-resources —— 测试资源配置文件|-target —— 目标文件输出位置例如.class、.jar、.war文件|-pom.xml —— maven项目核心配置文件

  • maven打包时会自动除去test包&#xff08;测试&#xff09;下的文件和资源&#xff0c;减轻项目大小。

1.4 在intellij idea中创建一个简单的javaMaven项目

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


  • finish后&#xff0c;如果是第一次创建要等待一段时间&#xff0c;下载相关jar包
  • 如果有报错&#xff0c;可以在本地仓库中删除报错的对应的插件&#xff0c;再刷新一下
    在这里插入图片描述
  • 其它设置
    在这里插入图片描述
  • 再为创建新项目时设置配置&#xff0c;否则每次创建项目都要重新配置很麻烦
    在这里插入图片描述
  • 设置先加载本地插件&#xff08;每次创建项目都去中央仓库下载插件会很慢&#xff0c;设置先加载本地仓库&#xff09;
  • &#xff08;-DarchetypeCatalog&#61;internal&#xff09;
    在这里插入图片描述
  • 创建好的项目缺少一个resources目录&#xff0c;有需要可自行补上
    在这里插入图片描述
    在这里插入图片描述

1.5 Maven的常用命令


  • 写一个简单的例子用于命令的使用
    在这里插入图片描述
  • 直接写&#64;Test会报错&#xff0c;Alt&#43;Enter导入&#xff0c;pom.xml中的依赖会自动加上&#xff08;在main下写的test不要修改scope为test&#xff09;
    在这里插入图片描述
  • 可以选择右侧的Maven&#xff0c;执行相关操作&#xff08;点击即可直接执行&#xff09;
    在这里插入图片描述
  • 除了上面的简便操作外&#xff0c;下面在终端中也可以使用这些命令&#xff08;要进入项目目录中使用命令 &#xff09;

mvn compile


  • 完成编译操作
  • 执行完毕后&#xff0c;会生成target目录&#xff0c;该目录中存放了编译后的字节码文件。
    在这里插入图片描述
  • 双击compile同效果
    在这里插入图片描述

在这里插入图片描述


mvn clean


  • 执行完毕后&#xff0c;会将target目录删除。
    在这里插入图片描述
  • 双击clean同效果
    在这里插入图片描述
  • clean后无target目录
    在这里插入图片描述

mvn test


  • 完成单元测试操作
  • 执行完毕后&#xff0c;会在target目录中生成&#xff1a;surefire-reports&#xff08;测试报告&#xff09;、test-classes&#xff08;测试的字节码文件&#xff09;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

mvn package


  • 完成打包操作
  • 执行完毕后&#xff0c;会在target目录中生成一个文件&#xff0c;该文件可能是jar、war
  • 普通项目.jar&#xff0c;web项目.war
    在这里插入图片描述
    在这里插入图片描述
  • 打开jar会发现&#xff0c;只会保存上面main下的文件&#xff0c;test下的将不会进入打包的文件中&#xff08;由于我这里是直接写在了main的java下&#xff0c;也就直接看到了&#xff0c;可自行测试&#xff09;
    在这里插入图片描述
  • 同样双击package即可
    在这里插入图片描述

mvn install


  • 执行 mvn install命令&#xff0c;完成将打好的jar包安装到本地仓库的操作
  • 执行完毕后&#xff0c;会在本地仓库中出现安装后的jar包&#xff0c;方便其他工程引用
    在这里插入图片描述
  • 双击install&#xff0c;同样效果
    在这里插入图片描述
  • 可在本地仓库中找到&#xff0c;方便其它项目引用
    在这里插入图片描述

mvn 组合命令


  • mvn clean compile&#xff08;先清除再编译&#xff09;
  • mvn clean test&#xff08;先清除再测试&#xff09;
  • mvn clean package&#xff08;先清除再打包&#xff09;
  • mvn clean install&#xff08;先清除再安装&#xff09;
  • 终端中直接输入即可&#xff0c;intellij idea中也提供了
    在这里插入图片描述
    在这里插入图片描述

1.6 一个项目引用另一个项目


  1. 使用骨架&#xff08;模板&#xff09;创建一个普通的Mavenjava项目
    在这里插入图片描述

  • 使用模板创建的普通javaMaven项目少2个resources目录
    在这里插入图片描述
  • 写一个简单的test&#xff0c;运行一下&#xff0c;然后将它install安装到本地
    在这里插入图片描述
    在这里插入图片描述
  • 在项目中新建一个Module&#xff0c;也使用骨架创建一个Maven_java2
    在这里插入图片描述
  • 在Maven_java2中添加上一个项目的依赖&#xff08;上一个项目要记得install安装到本地&#xff0c;否则可能找不到依赖&#xff09;
    在这里插入图片描述
  • 使用
    在这里插入图片描述

第二节 Maven的核心概念


2.1 坐标&#xff08;gav&#xff09;


  • 在平面几何中坐标&#xff08;x,y&#xff09;可以标识平面中唯一的一点。
    在maven中坐标就是为了定位一个唯一确定的jar包。
  • Maven世界拥有大量构建&#xff0c;我们需要找一个用来唯一标识一个构建的统一规范&#xff0c;拥有了统一规范&#xff0c;就可以把查找工作交给机器
  • Maven坐标主要组成(GAV)确定一个jar在互联网位置
    • groupId&#xff1a;定义当前Maven组织名称
    • artifactId&#xff1a;定义实际项目名称
    • version&#xff1a;定义当前项目的当前版本
      在这里插入图片描述

2.2 坐标的查找


  • 访问&#xff1a;http://www.mvnrepository.com.
  • 或直接百度输入maven第一个就是
    在这里插入图片描述
  • 例如要使用spring&#xff0c;输入sping&#xff0c;回车&#xff0c;选择所需要的jar和版本&#xff0c;就能看到所需要的jar的坐标了&#xff0c;复制进项目的pom.xml中的依赖中即可
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.3 依赖管理


scope 依赖范围

在这里插入图片描述


  • 其中依赖范围scope用来控制依赖和编译&#xff0c;测试&#xff0c;运行的classpath的关系。
  • 主要的是三种依赖关系如下&#xff1a;
    • compile&#xff1a; 默认编译依赖范围。对于编译&#xff0c;测试&#xff0c;运行三种classpath都有效
    • test&#xff1a;测试依赖范围。只对于测试classpath有效。
    • provided&#xff1a;已提供依赖范围。对于编译&#xff0c;测试的classpath都有效&#xff0c;但对于运行无效&#xff0c;因为由容器已经提供。例如&#xff1a;servlet-api
    • runtime&#xff1a;运行时提供。例如&#xff1a;jdbc驱动

依赖传递


  • 直接依赖和间接依赖
    • Maven_java2依赖 Maven_java&#xff0c;Maven_java3依赖Maven_java2
    • Maven_java2直接依赖Maven_java&#xff0c;Maven_java3间接依赖Maven_java
      在这里插入图片描述
  • 写成test就只能在当前的test包下使用
    在这里插入图片描述
  • 2依赖1
    在这里插入图片描述
  • 3依赖2
    在这里插入图片描述
  • 范围是compile的时候&#xff0c;依赖可以传递
    在这里插入图片描述
  • 范围是test的时候&#xff0c;依赖不会得以传递&#xff08;如果自己也不配置&#xff0c;2和3使用junit都会报错&#xff09;
    在这里插入图片描述
  • 如果2中设置了junit4.12且是compile&#xff0c;那么3会就近依赖使用2中的junit&#xff08;无关乎版本&#xff0c;就是就近&#xff09;

可选依赖


  • true/false 是否可选&#xff0c;也可以理解为是否向下传递。
  • 在依赖中添加optional选项决定此依赖是否向下传递&#xff0c;如果是true则不传递&#xff0c;如果是false就传递&#xff0c;默认为false
  • 在2中设置不向下传递&#xff0c;由于3中没有配置junit&#xff0c;而2又不向它传递会直接报错
    在这里插入图片描述

排除依赖


  • exclusions可用于排除依赖&#xff0c;注意exclusions是写在dependency中
  • 在3中设置排除1传递的依赖&#xff0c;因为2依赖1&#xff0c;3依赖2&#xff0c;所以默认的3中会有1的依赖&#xff0c;可以使用exclusions将其排除
    在这里插入图片描述

推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文详细介绍了 RosPack 类的功能和用法,探讨了其在 ROS 系统中的重要作用。RosPack 类提供了类似于终端命令 rospack 的功能,能够方便地查询和管理 ROS 包的相关信息。 ... [详细]
author-avatar
kyijhx
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有