用maven来构建项目,依赖jar包不用放到lib下面了,直接在pom文件声明即可。但是pom文件声明引用的jar包,默认是从maven中央仓库下载的。如果引用了不存在中央仓库的jar包,就会报错:依赖找不到。这时候就得为这个jar包添加远程仓库,告诉maven,这个jar包不是从你的中央仓库获取的,是从我指定的远程仓库获取的。
1、例子:
a、pom文件引用了一个不存在中央仓库的jar包,它存放在Java.net资源库中
org.jvnet.localizer 只适用于
Java.net资源库
在pom.xml下有如下声明:
<dependency>
<groupId>org.jvnet.localizer</groupId>
<artifactId>localizer</artifactId>
<version>1.8</version>
</dependency>
当你建立这个 Maven 项目,它将报错:依赖找不到,并输出错误信息。
b、正确的声明方式
a段声明保留,只需要在pom文件下加入如下配置,即配置远程仓库,就能正确找到jar包
在本地资源库没有找到org.jvnet.localizer,在中央资源库也没找到,需要声明远程仓库,到远程仓库去查找依赖
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
2、Maven的依赖库查询顺序为:
- 在 Maven 本地资源库中搜索,如果没有找到,进入第 2 步,否则退出。
- 在 Maven 中央存储库搜索,如果没有找到,进入第 3 步,否则退出。
- 在java.net Maven的远程存储库搜索,如果没有找到,提示错误信息,否则退出。
3、总结
默认情况下,Maven从Maven中央仓库(
http://search.maven.org/
)
下载所有依赖关系。但是,有些库丢失了,在Maven中央仓库找不到,只有在Java.net或JBoss的储存库远程仓库中才能找到,这时候就要添加远程仓库:
repositories标签下可以放多个repository,repository下需要指定id和url的值:
<project ...>
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
</project>
<project ...>
<repositories>
<repository>
<id>JBoss repository</id>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
</repositories>
</project>