一、maven的作用
Maven是一款服务于Java平台的自动化构建工具。Maven 作为 Java 项目管理工具,它不仅可以用作包管理,还有许多的插件,可以支持整个项目的开发、打包、测试及部署等一系列行为。
传统工程我们直按把jar包放置在项目中, Maven工程真正的jar包放置在仓库中,项目中只用放置jar包的坐标。不使用Maven工具,当做 Java 项目需要第三方依赖包时,将别人打好的 Jar 包下载到本地,然后手动指定给项目。另外,比如版本控制,需要新版本怎么办,重新下载,重新指定,这个过程操作麻烦。而用了 Maven 之后,需要什么包,直接在 pom.xml 中添加几行 xml 代码(添加所依赖jar包的坐标),指定包名、版本等,就可以了,方便开发。
二、settings.xml配置
1. 设置本地仓库
系统默认是保存在c盘的仓库,这些文件尽量都保存在除c盘外的其它盘
<localRepository>D:\software\apache-maven-3.6.1\mvn_resp</localRepository>
2. 配置阿里云镜像
可以让访问速度更快,获取资源的时间减少
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
三、配置nexus私服(可选)
根据自己需求配置,不需要可以不配,只完成前面的一二部分即可。
nexus私服:是一个强大的maven仓库管理器
<!-- 配置访问私服的权限 -->
<servers>
<server>
<id>lx-release</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>lx-snapshot</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
<!-- 私服的访问路径 -->
<mirrors>
<mirror>
<id>maven-public</id>
<!-- *表示以后不管什么操作都与私服打交道 -->
<mirrorOf>*</mirrorOf>
<!-- 公共仓库地址 -->
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
</mirrors>
- 启动服务器(命令行)
nexus.exe /run nexus - 访问服务器
http://localhost:8081/ - 私服仓库3钟
- 宿主仓库hosted:保存无法从中央仓库获取的资源,自主研发,第三方非开源项目
- 代理仓库proxy: 代理远程仓库,通过nexus访问其他公共仓库,例如中央仓库
- 仓库组group:将若干个仓库组成一个群组,简化配置仓库组不能保存资源,属于设计型仓库
四、maven依赖范围
- compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;test:测试依赖范围,只能用于测试classpath,而在编译和运行主程序项目时无法使用此jar包依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;
- provided: 此依赖范围,对于编译和测试classpath有效,而对运行时无效,典型的是servlet包;
- runtime:运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,典型的就是JDBC驱动实现;
- system:系统依赖范围,和provided依赖范围一致,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用;