前言:
不论是mac平台的idea还是win平台的idea,都有自带的maven。
如果不想使用idea自带的maven可以自己去官网下载对应版本的maven。
下面我将重点介绍自己去网上下载的maven的环境配置和具体使用以及让大家了解idea自带的maven(只做了解)。
一.了解idea中自带的maven
如下图点击
之后进入下图界面,接着点击
可以看到我的电脑上面有4个maven,其中最后一个/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3与第三个Bundled(Maven3)是同一个,只不过最后一个是其全路径。
进入该路径下查看:
可以看到我的idea中自带有两个版本的maven,我朋友的win平台电脑上idea自带的只有一个版本的maven。
二.网上下载好maven后的环境配置:
如果想用自己下载的maven,文件下载完成后,需要完成以下步骤:
-
打开终端 ,输入
vim ~/.bash_profile
-
进入编辑模式,在文件末尾加上该片段:
export MAVEN_HOME=/Users/yushiwen/apache-maven-3.5.2
上述片段解读:等于号后面的是下载好的maven的全路径,=后面写上自己maven的全路径
export PATH=$PATH:$MAVEN_HOME/bin
上述片段解读:这个是固定的,不需要改
写好后如下:
-
写好后退出,输入
source ~/.bash_profile
命令使刚才的文件配置生效 -
输入
mvn -v
查看 Maven 否安装成功
如下图说明生效:
三.设置maven下载的jar包到某个指定文件
-
点击打开我们下载的maven文件,打开conf文件下的settings.xml,如下:
-
我使用的vscode打开的settings.xml,打开后在如下片段加入如下代码:
第55行入如下代码:<localRepository>/Users/yushiwen/apache-maven-3.5.2/repository</localRepository>
代码段解读:
/Users/yushiwen/apache-maven-3.5.2是其下载的maven的全路径,后面的repository是之后自动下载需要的jar包所放置的地方。
代码添加完成后如下:
-
因为下载jar包地址不太稳定,我们可以换成国内的镜像地址,settings.xml更改如下:
在<mirrors></mirrors>之间加入如下代码段:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>uk</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
<mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<!-- <url>http://192.168.1.100:8081/nexus/content/groups/public/</url>-->
<url>http://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
更改后如下:
四.下载jar包到本地仓库(下载到刚才的repository目录下)
- 终端输入
mvn help:system
出现以下信息证明下载成功:
五.在idea选择使用指定的maven
- 点击IntelliJ IDEA,选择Preferences
- 进入如下页面,安装提示点击:
六.创建maven,输出数据库的哈希地址。
- 新建model,选择maven,勾选,选择webapp,注意有两个webapp,创建时需要看仔细一点。
- 一路点击next
- 创建时勾选create from archetype:
- 创建时不勾选:
- 勾选不勾选相互结合(就是创建文件夹,拖入文件到其中,具体过程省略):
- 在pom.xml中标签内添加jdbc的依赖坐标:
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
- main函数及输出:
说明:
可以看到在pom.xml文件中添加相应的依赖坐标,就可以在不自己导入jar包的情况下,使用mysql连接驱动,实际上这个连接驱动jar包在本地仓库中(repository目录下)。
7.pom.xml文件说明:
- 坐标说明:
<!--依赖坐标-->
<dependencies>
<!--mysql驱动包-->
<dependency>
<!--组织名-->
<groupId>mysql</groupId>
<!--项目名-->
<artifactId>mysql-connector-java</artifactId>
<!--版本-->
<version>8.0.12</version>
</dependency>
<!--@Test测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!--范围-->
<scope>test</scope>
</dependency>
</dependencies>
- 依赖范围:
A 依赖 B,需要在 A 的 pom.xml 文件中添加 B 的坐标,添加坐标时需要指定依赖范围,依赖范围包
括:
compile:此范围为默认依赖范围。作用在: 编译、测试、运行
provided:只有在当 JDK 或者一个容器已提供该依赖之后才使用,在编译和测试时需要,在运行时不需要。
比如: tomcat 容器包含servlet api,但是在编译和测试时需要,运行时使用tomcat内置的servlet即可。
runtime:在运行和测试系统的时候需要,但在编译的时候不需要。
比如:jdbc的驱动包。
test:在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,
比如:junit。
system:system依赖不推荐使用。
依赖范围 | 对于编译 classpath有效 | 对于测试 classpath有效 | 对于运行 classpath有效 | 例子 |
---|---|---|---|---|
compile | Yes | Yes | Yes | spring-core |
test | - | Yes | - | Junit |
provided | Yes | Yes | - | Servlet-api |
runtime | - | Yes | Yes | JDBC驱动 |
system | Yes | Yes | - | 本地的,Maven仓库之外的类库 |
- 总结:
默认引入 的 jar 包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
servlet-api 、jsp-api ------- provided (编译、测试有效,运行时无效,防止和 tomcat 下 jar 冲突)
jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
junit ----- test (测试有效)
依赖范围由强到弱的顺序是:compile>provided>runtime>test
不同的jar包依赖使用时范围是不同的,需要自己在实际开发过程中去慢慢积累经验。