maven
用maven可以方便的导入jar包。
1. idea中配置maven
先去maven官网下载自己想要的版本
idea中找到maven设置
将上图中maven home path更改为自己刚下载的maven目录。
上图显示用户目录下有一个.m2目录,但是我们去查找发现不存在,这是因为必须要执行一次maven命令才会创建该目录。
将mvn加入环境变量
- 执行mvn命令
执行完后,.m2目录出现了,不过里面只有一个仓库文件夹,因此现在要去我们下载的maven文件中把settings.xml(maven→conf下)文件复制到.m2目录中。
这样配置就完成了。
2. maven仓库
我们写java项目时经常会使用很多外部jar包,比如mybatis,Spring等,手动导入这些jar包很麻烦,maven帮我们解决了这个问题,它可以帮我们管理jar包。
2.1 中央仓库
maven远程【中央仓库】存储了所有的Java API资源,通过https://mvnrepository.com/访问。
但因为该网站服务器在国外,因此我们再配置国内的镜像仓库
2.1.1 配置镜像中央仓库
在settings.xml文件中
比如:
1 | <mirror> |
2.2 私服远程仓库
相当于公司内部自建的maven远程仓库,里面的所有API都是本公司私有,仅供本公司员工使用。
2.3 本地仓库
从远程库拉取到本地的所有API内容都会缓存到本地仓库,同时本地构建的API内容也会存储到本地仓库,稍后可以发布到远程仓库。
2.3.1 配置本地仓库
去.m2下的settings.xml中配置。
找到localRespository
在这句话下面添加
1 | <localRepository>C:\Users\65403\.m2\repository</localRepository> |
3. idea有多个jdk时,要在maven中指定
在File-ProjectStructure-SDKs中可以查看当前idea中的jdks情况。
打开settings.xml文件,找到profiles标签,在
1 | <profile> |
4. maven的工程类型
【POM工程】是逻辑工程,有继承的概念,比如父工程引入了某个jar包,则它的子工程也自动拥有这个jar包,该工程专门用来做jar包的版本控制。
【JAR工程】即本地Java工程,导出来是.jar形式的包。
【WAR工程】发布到服务器上的工程,导出来是.war形式的包。
5. idea中创建maven项目
可以看到maven项目和普通的java项目结构不一样(【注意,里面的目录名字不要随意更改,尤其是main和test】)
执行install命令
项目结构中又会出现一个target目录,该目录存放所有编译后的文件。
pom.xml为本项目的配置文件,里面包含了本项目的“坐标”。
6. maven工程关系
在maven中,每一个项目都是一个对象,因此java中对象之间的关系同样适用于maven中项目之间的关系。
6.1 依赖关系及配置
A工程的开发需要B工程,就说A依赖B,或者B注入A。通俗来说,就是将B的jar包导入A中。
比如要在当前maven项目中导入MyBatis包:
到pom.xml文件中
去中央仓库找到MyBatis的“坐标”
将坐标复制到dependencies标签之间
如果显示未找到,右键→maven→reload project
项目改动后,一定要点击右侧maven,先clean,然后再install使jar包变为最新状态
【依赖的传递性】
如本例项目A依赖了MyBatis,如果再创建一个项目B,项目B依赖了项目A,那么项目A依赖的MyBatis也会自动被install到项目B。
【依赖的最短路径优先原则】
假如有两条依赖关系:
A -> B -> C -> D(2.0)
A -> E -> D(1.0)
那么A会依赖D(1.0)
【当两条路径长度相等时,遵从最先声明原则】
在POM中谁先被声明就用谁。
【排除】
假如A依赖了B,B依赖了C,如果A只想依赖B不想依赖C,那么就在pom.xml中声明
1 | <!-- A's pom.xml |
【依赖范围】
scope关键字
1 | <dependency> |
compile为默认范围,代表该依赖在编译和运行时均生效。
provided仅在编译和测试时生效,运行时不生效。
runtime仅在运行时生效
还有几个,用到了查。