`
hellohank
  • 浏览: 143880 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

记录一下maven中多仓库的配置

阅读更多

背景说明

又是记性不好的记录类文章,没有任何技术含量,只是用于防止以后换电脑搭建环境时要用的。

本次主要记录在maven中如何让jar包在多仓库中查找,直到找到为止。

方法有多种,这里说三个比较常见的。

具体步骤

自建私有nexus仓库

在私有nexus仓库中,从多个第三方仓库中获取jar包,然后在自己的maven的settings.xml中配置mirror,将所有请求映射到这个私有仓库即可。具体做法和mirror配置网上很多。mirror配置举例如下(将所有下载映射到https://repo1.maven.org/maven2/):

<mirror>
      <id>maven repo1</id>
      <mirrorOf>*</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>https://repo1.maven.org/maven2/</url>
    </mirror>

这个地方,有一点要注意一下:多个mirror配置,如果mirrorOf相同,只会有一个有效,所以多个仓库使用并不是通过配置多个mirror来实现的,而是mirror到私有仓库,由私有仓库连接多个第三方仓库实现的。

在项目的pom中指定仓库

这个方法用的很多,也是比较建议的一种,因为灵活。但也要注意结合实际,因为有些公司在开发环境下的maven仓库和部署环境下的url等不一样,就不能使用这个方式。

具体做法是在pom文件的project节点下增加repositories配置,举例如下:

                  <repositories>
			<repository>
				<id>repo1</id>
				<name>Public Repository</name>
				<url>https://repo1.maven.org/maven2/</url>
				<layout>default</layout>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
			<repository>
				<id>repo</id>
				<name>mic-inner-repositories</name>
				<url>https://repo.maven.apache.org/maven2/</url>
				<layout>default</layout>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
			<repository>
				<id>central</id>
				<url>http://central.maven.org/maven2/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
			<repository>
				<id>atlassian</id>
      			<url>https://maven.atlassian.com/repository/public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>

		</repositories>

 

在settings.xml做全局配置

这个做法很绝,因为是全局配置,所以不需要每个项目单独在pom中配置,适合很多情况(特别是上面说的开发环境和生产环境仓库不一致的问题),但需要开发人员配置自己的settings.xml。具体做法是:在maven的settings.xml文件的profiles节点下新增一个profile,举例如下:

  	<profile>
		<id>repositorys</id>

		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<repositories>
			<repository>
				<id>repo1</id>
				<name>Public Repository</name>
				<url>https://repo1.maven.org/maven2/</url>
				<layout>default</layout>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
			<repository>
				<id>repo</id>
				<name>mic-inner-repositories</name>
				<url>https://repo.maven.apache.org/maven2/</url>
				<layout>default</layout>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
			<repository>
				<id>central</id>
				<url>http://central.maven.org/maven2/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
			<repository>
				<id>atlassian</id>
      			<url>https://maven.atlassian.com/repository/public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>

		</repositories>
	</profile>

 注意一下,这个配置里面的大部分内容与第二个方案中相同,但要特别注意:<activeByDefault>true</activeByDefault>,这才是整个配置的灵魂!有了这个配置,就默认启动这个配置的,否则还需要在mvn命令中指定使用哪个profile的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics