下载地址:https://dlcdn.apache.org/maven/
安装过程:https://www.runoob.com/maven/maven-setup.html
#maven根据配置的dependcy配置去拉取jar包,包括去那个组找,什么版本。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
<version>2.6.2version>
dependency>
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
特别说明一下mirrorOf:
1)关于mirrorOf配置的几个通配符号
* = everything 代理所有的仓库
external:* = 除了本地缓存之后的所有仓库
repo,repo1 = 代理repo,repo1库
*,!repo1 = 所有仓库除了repo1
以上面的xml为例解释一下含义,它的意思是在访问maven的central库的时候,将请求重定向到我们配置的阿里镜像库,就是是说用我们配置的这个阿里库作为central库的镜像。其中central是仓库的id能够代表一个仓库,也就是说我们平时下载包的时候请求是直接访问国外的仓库,配置了mirror后访问central库的请求会被定向到我们配的http://maven.aliyun.com/nexus/content/groups/public/这个库,就不再访问外网了,提高了下载速率,但是如果不是访问central库的请求不会被转发,还是改访问哪里就访问哪里。所以说mirrorOf本质上是相当是指定我们代理那个仓库,代理后我们就是访问镜像仓库。
<repositories>
<repository>
<id>companyname.lib1id>
<url>http://download.companyname.org/maven2/lib1url>
repository>
<repository>
<id>companyname.lib2id>
<url>http://download.companyname.org/maven2/lib2url>
repository>
repositories>
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
1 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
2 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
3 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
4 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
原文链接:https://www.runoob.com/maven/maven-repositories.html
实践案例:
我要下载geotools的相关包但是maven仓库并没有所以在setting.xml做如下配置:
需要注意的是千万不要把mirrorOf配置成为*,否则所有的库都被拦截走阿里仓库了。
<profiles>
<profile>
<id>devid>
<repositories>
<repository>
<id>osgeoid>
<name>OSGeo Release Repositoryname>
<url>https://repo.osgeo.org/repository/release/url>
<snapshots><enabled>falseenabled>snapshots>
<releases><enabled>trueenabled>releases>
repository>
<repository>
<id>osgeo-snapshotid>
<name>OSGeo Snapshot Repositoryname>
<url>https://repo.osgeo.org/repository/snapshot/url>
<snapshots><enabled>trueenabled>snapshots>
<releases><enabled>falseenabled>releases>
repository>
repositories>
profile>
profiles>
<activeProfiles>
<activeProfile>devactiveProfile>
activeProfiles>
Maven有以下几种依赖范围:
原文链接:https://blog.csdn.net/peerless_hero/article/details/57428763
参考下文:
https://blog.csdn.net/justry_deng/article/details/98665086
转载:
在Maven中,使用第三方库一般是通过pom.xml文件中定义的dependency从远程repository中下载该库。但是如果库文件是公司内部的库,或者在本地而不能通过远程repository下载,这种情况下,有两种方法可以满足需求。
方法一:
将本地的jar文件安装到本地repository中,具体步骤如下:
1、准备好本地的jar文件
2、使用如下命令安装jar文件
mvn install:install-file -Dfile=abc.jar
-DgroupId=com.mycompany.myproduct -DartifactId=abc
-Dversion=1.0 -Dpackaging=jar -DgeneratePom=true
其中,-Dfile制定jar文件的位置。执行完该命令后,会在本地repository(通常是$HOME/.m2目录)中出现一个目录(com),在其下会有一个abc-1.0.jar的文件和一个自动产生的pom文件。
3、安装完之后,在另一个应用程序中使用它的时候,只要在pom文件中指定相应的dependency就可以,如:
com.mycompany.myproduct
abc
1.0
方法二:
该方法与前面的方法不同之处在于它不会安装任何库文件,只是在应用程序中的pom文件中指定jar文件的目录
即可,在pom中的dependency中如下设置:
com.mycompany.myproduct
abc
1.0
system
/home/root/abc.jar
其中的scope被设置成system,默认是compile,指出dependency不是去repository中查找,而是在系统目录
中查找。systemPath指定了jar文件的绝对路径。