记录一下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的。
上一篇: Linux环境(Environment)设置相关命令
下一篇: go常用命令