红联Linux门户
Linux帮助

Maven灵活使用不同的仓库

发布时间:2014-11-04 09:44:56来源:linux网站作者:sheismylife

Nexus私服让我们可以在企业内部从同一个私服下载Maven仓库里面的dependency和plugin.很方便,不过昨天碰到的一个问题是,有一个仓库加入到Nexus后不能,Maven工程无法通过Nexus私服下载该仓库的dependency。

这个仓库叫做:http://download.osgeo.org/webdav/geotools/


想了一个办法绕过它,通过Maven的~/.m2/settings.xml中配置两个Mirror,在遇到osgeo的时候直接使用该仓库,而在其他情况下用私服。


下面是配置:

<settings> 
<servers> 
<server> 
<id>snapshots</id> 
<username>admin</username> 
<password>admin</password> 
</server> 
</servers> 
<pluginGroups> 
<pluginGroup>org.apache.maven.plugins</pluginGroup> 
</pluginGroups>  
<mirrors> 
<mirror> 
<!--This sends everything else to /public --> 
<id>nexus</id> 
<mirrorOf>external:*,!osgeo</mirrorOf> 
<url>http://my-proxy:8080/nexus/content/groups/public</url> 
</mirror> 
<mirror> 
<id>osgeo</id> 
<mirrorOf>osgeo</mirrorOf> 
<name>Open Source Geospatial Foundation Repository</name> 
<url>http://download.osgeo.org/webdav/geotools/</url> 
</mirror> 
</mirrors> 
<profiles> 
<profile> 
<id>nexus</id> 
<!--Enable snapshots for the built in central repo to direct --> 
<!--all requests to nexus via the mirror --> 
<repositories> 
<repository> 
<id>central</id> 
<url>http://central</url> 
<releases><enabled>true</enabled></releases> 
<snapshots><enabled>true</enabled></snapshots> 
</repository> 
</repositories> 
<pluginRepositories> 
<pluginRepository> 
<id>central</id> 
<url>http://central</url> 
<releases><enabled>true</enabled></releases> 
<snapshots><enabled>true</enabled></snapshots> 
</pluginRepository> 
</pluginRepositories> 
</profile> 
</profiles> 
<activeProfiles> 
<!--make the profile active all the time --> 
<activeProfile>nexus</activeProfile> 
</activeProfiles> 
</settings>


而在maven工程里面如下配置,注意repository.id必须和mirror.id相等。


<repositories> 
<repository> 
<id>local repository</id> 
<url>http://my-proxy:8080/nexus/content/groups/public/</url> 
</repository> 
<repository> 
<id>osgeo</id> 
<name>Open Source Geospatial Foundation Repository</name> 
<url>http://download.osgeo.org/webdav/geotools/</url> 
</repository> 
</repositories>