1. Repository用来存放maven项目的构件,如pom, *.jar, *-source.jar等,它的布局像一个文件系统,有路径(目录)和文件
2. 使用Maven时,你会跟两类Repository打交道。
a. 存放在你本机那些的构件即组成“
本地Repository”
b. 不在你本机的、存在服务器上的叫“
远程Repository"。
当Maven需要构件时,首先会在本地Repository里找,找不到才去远程Repository中找。
3. Repository是相对于项目而言的,所以
你可以在项目级别配置远程的Repository,而且可以配多个。
一个Repository是一个 id + url + 其它信息的组合。id你可以随便取,url则是远程Repository的确切地址。
<project> <repositories> <repository> <id>jboss</id> <name>jboss</name> <url>https://repository.jboss.org/nexus/content/repositories/</url> ... </repository> <repository> <id>google</id> <name>google</name> <url>http://google-maven-repository.googlecode.com/svn/repository/</url> ... </repository> </repositories> ... </project>
对此你可能有多种疑问:
问:项目里配了两个repository,那下载构件时,Maven去哪个repository呢?
答案:测试表明,Maven会先去定义在最前面的repository即"jboss"里去找; 如果找不到,再去"google"找
问:如果jboss和google里都找不到呢?
答:就去Maven默认的central repository里去找,它的id是"central", url是http://repo1.maven.org/maven2. 这个配置写死在maven的某个jar里面
问:如果我把上面的jboss repository换成"central"会怎么样?
<project> <repositories> <repository> <id>central</id> <name>central</name> <url>https://repository.jboss.org/nexus/content/repositories/</url> ... </repository> <repository> <id>google</id> <name>google</name> <url>http://google-maven-repository.googlecode.com/svn/repository/</url> ... </repository> </repositories> ... </project>
答:测试表明,Maven会先去定义在最前面的repository即"central"里去找; 如果找不到,再去"google";如果还找不到,就说找不到了。也就是说,这里的"central"配置覆盖了maven的默认设置。