文章目录

  • Maven相关的概念
    • Maven仓库和坐标
  • Maven的安装
    • IDEA集成Maven
  • 使用IDEA创建Maven工程
  • Maven的常用命令
  • 依赖管理

Maven相关的概念

maven 资源仓库:https://mvnrepository.com/

mybatis (教程)中文网:https://mybatis.net.cn/

什么是Maven

Maven是项目进行模型抽象,充分运用的面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。

说白了: Maven是由Apache开发的一个工具用来管理java项目(依赖(jar)管理, 项目构建, 分模块开发 ).

Maven的作用

依赖管理: maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。

项目构建: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。

maven对工程分模块构建,提高开发效率。 (后面Maven高级会涉及)

小结

Maven是Apache开发的一个项目管理工具. 用来管理java项目的

Maven的作用

  • 依赖(jar)管理

  • 项目构建

  • 分模块开发

Maven仓库和坐标

Maven的仓库

仓库名称 作用
本地仓库 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。
中央仓库 仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:https://mvnrepository.com/
远程仓库 在公司内部架设一台私服,其它公司架设一台仓库,对外公开。

Maven的坐标

Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。坐标的定义元素如下:

  • groupId:项目组织唯一的标识符,实际对应JAVA的包的结构 (一般写公司的组织名称 eg:com.execise,com.alibaba)
  • artifactId: 项目的名称
  • version:定义项目的当前版本

例如:要引入druid,只需要在pom.xml配置文件中配置引入druid的坐标即可:

<!--druid连接池-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId>    <version>1.0.9</version>
</dependency>

小结

仓库(本地仓库,中央仓库,远程仓库(私服))

  • 先从本地仓库找

    • 如果有, 就直接获得使用

    • 如果没有, 从中央仓库找, 自动的下载到本地仓库

通过坐标从仓库里面找到对应的jar使用


<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId>    <version>1.0.9</version>
</dependency>

Maven的安装

下载Maven

官网链接:http://maven.apache.org/

安装Maven

将Maven压缩包解压,即安装完毕

Maven目录介绍

配置环境变量

进入环境变量

配置MAVEN_HOME和Path

配置本地仓库

将软件文件夹中的Repository解压

配置本地仓库

在maven的安装目录中conf/ settings.xml文件,在这里配置本地仓库

示例代码:

<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| The path to the local repository maven will use to store artifacts.|| Default: ${user.home}/.m2/repository<localRepository>/path/to/local/repo</localRepository>--><localRepository>E:/source/04_Maven/repository_pinyougou</localRepository>

配置国内镜像

默认情况下,maven会去它自己的仓库(中央仓库)里面下载jar包,由于仓库在国外,所以下载会比较慢。一般会配置成国内的镜像,比如:阿里云的镜像

在setting.xml文件中的标签中追加以下内容即可

<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>

测试Maven安装成功

打开cmd本地控制台,输入mvn -version

小结

注意事项

  • Maven安装包仓库 都需要解压到一个没有中文和空格的目录下(建议解压到不同的目录)

  • 配置

    • MAVEN_HOME 配置到Maven的解压目录

    • Path 配置到bin目录

  • apache-maven-3.3.9\conf\settings.xml配置本地仓库

IDEA集成Maven

配置Maven

配置参数(创建工程不需要联网,解决创建慢的问题) -DarchetypeCatalog=internal

配置默认Maven环境

每次创建Maven工程的时候,总是需要重新选择Maven配置信息,那是因为默认的Maven环境不是我们当前的maven环境,所以需要配置。配置流程如下图:

选择默认的配置

进入配置

配置参数(创建工程不需要联网,解决创建慢的问题) -DarchetypeCatalog=internal

重启IDEA, 就可以生效了

小结

配置默认Maven环境 目的: 为了下次创建的时候 不需要再选择Maven了, 使用的就是这个默认环境的

配置三块

  • maven_home

  • Maven的配置文件

  • 本地仓库的路径

加了一个优先不依赖网络创建项目


使用IDEA创建Maven工程

创建java工程

java工程目录结构

需要main/java文件夹变成 源码的目录(存放java源码)

需要test/java文件夹变成 测试源码的目录(存放单元测试)

创建resources目录, 变成资源的目录

编写Hello World!

小结

JavaSe工程的骨架

项目的结构

Maven的常用命令

clean命令

清除编译产生的target文件夹内容,可以配合相应命令一起使用,如mvn clean

compile命令

该命令可以对src/main/java目录的下的代码进行编译

test命令

测试命令,或执行src/test/java/下所有junit的测试用例

在test/java目录下创建测试类DemoTest

执行test命令测试

控制台显示测试结果

package命令

mvn package,打包项目

  • 如果是JavaSe的项目,打包成jar包

  • 如果是JavaWeb的项目,打包成war包

打包后的项目会在target目录下找到

install命令

mvn install,作用:把项目打包后将打出来的包安装在本地仓库 , 仓库里面一般放的是jar包,一般打包出来就是打出来一个jar包,然后把这个jar包放到仓库里面管理起来。

安装完毕后,在本地仓库中可以找到execise_javase_demo的信息

小结

命令作用

  • clean 用来清除编译后的文件(target文件夹里面的)【一般清缓存】

  • compile 编译

  • test 执行单元测试

  • package 打包 (javaSe–>jar, javaweb–>war)

  • install 把项目打包之后安装到本地仓库

生命周期

  • 当我们执行了install 也会执行compile test package

依赖管理

导入依赖

​ 导入依赖坐标,无需手动导入jar包就可以引入jar。在pom.xml中使用标签引入依赖。

​ 做项目/工作里面 都有整套的依赖的, 不需要背诵的.

​ 去Maven官网找, 赋值,粘贴. http://mvnrepository.com/

导入junit的依赖

导入junit坐标依赖

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>

进行单元测试

import org.junit.Test;public class DemoTest {@Testpublic void test1(){System.out.println("test running...");}
}

导入servlet的依赖

创建Servlet,但是发现报错,原因是没有导入Servlet的坐标依赖

导入Servlet的坐标依赖

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope>
</dependency>

原有报错的Servlet恢复正常

依赖范围

  • compile 编译、测试、运行,A在编译时依赖B,并且在测试和运行时也依赖

    例如:strus-core、spring-beans, C3P0,Druid。打到war包或jar包

  • provided 编译、和测试有效,A在编译和测试时需要B

    例如:servlet-api就是编译和测试有用,在运行时不用(tomcat容器已提供)

    不会打到war

  • runtime:测试运行有效,

    例如:jdbc驱动包 ,在开发代码中针对java的jdbc接口开发,编译不用

    在运行和测试时需要通过jdbc驱动包(mysql驱动)连接数据库,需要的

    会打到war

  • test:只是测试有效,只在单元测试类中用

    例如:junit

    不会打到war

  • 按照依赖强度,由强到弱来排序:(理解)

    compile> provided> runtime> test

小结

坐标不需要背, 做项目时候/工作开发 都有整套的坐标. 如果是导入一些特定, 可以查阅网站,直接拷贝

作用范围

  • compile 编译、测试、打包运行部署 有效 【默认】

  • provided 编译, 测试 有效. 打包运行部署 无效

  • runtime 测试、打包运行部署 有效 编译无效

  • test 只是测试有效,只在单元测试类中用

Servlet,JSP 这类jar 需要加上provided , 因为部署到Tomcat里面. tomcat里面有, 如果没有加上provided , 可能会导致jar 冲突

单元测试的 建议加上test

Maven安装和依赖管理详解相关推荐

  1. Maven第3篇:详解maven解决依赖问题

    Maven第3篇:详解maven解决依赖问题 本文主要内容 感受一下maven的效果 maven约定配置 maven中pom文件 maven坐标详解 maven依赖导入功能 maven依赖范围详解 m ...

  2. 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解

    用idea创建maven项目,配置tomcat详解,电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上 下面就直接开始看图啦: 这个我刚刚开始没注意细看,原来w ...

  3. Maven的settings.xml配置详解

    Maven的settings.xml配置详解 1 基本介绍 maven的两大配置文件:settings.xml和pom.xml.其中settings.xml是maven的全局配置文件,pom.xml则 ...

  4. Maven的pom.xml文件详解------The Basics

    转载自  Maven的pom.xml文件详解------The Basics Maven坐标 GroupId.artifactId和version构成了Maven的坐标(groupId和version ...

  5. CentOS7下的软件安装方法及策略详解

    CentOS7下的软件安装方法及策略详解 互联网   01-24 15:15:09   作者:佚名   我要评论 今天小编为大家带来的是CentOS7下的软件安装方法及策略详解:希望对大家安装Cent ...

  6. [网络安全提高篇] 一一九.恶意软件动态分析经典沙箱Cape的安装和基础用法详解

    终于忙完初稿,开心地写一篇博客. "网络安全提高班"新的100篇文章即将开启,包括Web渗透.内网渗透.靶场搭建.CVE复现.攻击溯源.实战及CTF总结,它将更加聚焦,更加深入,也 ...

  7. CentOS7 安装配置SFTP服务器详解

    CentOS7 安装配置SFTP服务器详解 1.SFTP简介 SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protoc ...

  8. 基于Kubernetes构建Docker集群管理详解

    from: 基于Kubernetes构建Docker集群管理详解 Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动 ...

  9. caffe linux 教程,CentOS7安装Caffe的教程详解

    安装依赖包 sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel ...

最新文章

  1. 浅谈主动学习(Active Learning)
  2. openresty开发系列3--nginx的平滑升级
  3. MySQL优化器cost计算
  4. Mysql优化系列(0)--总结性梳理
  5. 44年前的今天,改变世界的TA诞生了! | 极客头条
  6. 深和jsonp【转】 jsonpk跨域问题详解
  7. Codeforces Round #300 E - Demiurges Play Again
  8. 还香吗?iPhone 13/Pro 手机“失灵”:不支持通过 Apple Watch 解锁屏幕
  9. Tomcat修改源码,重新编译
  10. html输入格式限制,jQuery输入框限制输入内容格式插件
  11. AdRotator,广告轮播 #1 -- 透过XML档来作设定。
  12. 神经网络建模的基本思想,三维建模神经网络设计
  13. SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 第一篇
  14. win10系统魔兽世界无法连接服务器地址,win10系统魔兽世界无法启动3d加速怎么解决...
  15. 离线强化学习-4 DP-based方法
  16. 18.数据统计之分组对象与apply函数
  17. Android 使用百度飞桨做OCR的本地识别
  18. springBoot项目改名
  19. PCB设计---无源晶振和有源晶振
  20. 计算机术语什么叫袜子,大电脑织袜机部分功能操作与说明

热门文章

  1. 从0开始学web-day5
  2. 计算机辅助药物设计助力中药研究
  3. 汽车 Automotive > SOME/IP VS DDS调研和未来方向
  4. android studio 网络定位城市名称
  5. mac创建react项目报错 :Aborting installation. npm install --save --save-exact --loglevel error react reac
  6. 【Unity】【Wwise】具体某一音频的暂停、恢复和终止播放
  7. cf Educational Codeforces Round 85 (Rated for Div. 2)B. Middle Class
  8. 从零开始学平面设计需要注意什么
  9. C#界面开发终极UI工具包分享——Krypton
  10. 数据挖掘基础-1.文本相似度