《Maven 实战》笔记3.1 – Repository的概念及其在项目中的使用

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的默认设置。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.