maven repository

在settings.xml中配置远程仓库

我们知道了如何在POM中配置远程仓库,但考虑这样的情况:在一个公司内部,同时进行这3个项目,而且以后随着这几个项目的结束,越来越多的项目会开始;同时,公司内部建立一个Maven仓库。我们统一为所有这些项目配置该仓库,于是不得不为每个项目提供同样的配置。问题出现了,这是重复 

其实我们可以做到只配置一次,在哪里配置呢?就是settings.xml。

不过事情没有那么简单,不是简单的将POM中的<repositories>及<pluginRepositories>元素复制到settings.xml中就可以,setting.xml不直接支持 这两个元素。但我们还是有一个并不复杂的解决方案,就是利用profile,如下:

Xml代码 

  1. <settings>  
  2.   ...   
  3.   <profiles>  
  4.     <profile>  
  5.       <id>dev</id>  
  6.       <!-- repositories and pluginRepositories here-->  
  7.     </profile>  
  8.   </profiles>  
  9.   <activeProfiles>  
  10.     <activeProfile>dev</activeProfile>  
  11.   </activeProfiles>  
  12.   ...   
  13. </settings>  

[xml] view plain copy

 

  1. <settings>  
  2.   ...  
  3.   <profiles>  
  4.     <profile>  
  5.       <id>dev</id>  
  6.       <!-- repositories and pluginRepositories here-->  
  7.     </profile>  
  8.   </profiles>  
  9.   <activeProfiles>  
  10.     <activeProfile>dev</activeProfile>  
  11.   </activeProfiles>  
  12.   ...  
  13. </settings>  

这里我们定义一个id为dev的profile,将所有repositories以及pluginRepositories元素放到这个profile中,然后,使用<activeProfiles>元素自动激活该profile。这样,你就不用再为每个POM重复配置仓库。

使用profile为settings.xml添加仓库提供了一种用户全局范围的仓库配置。

 

镜像

如果你的地理位置附近有一个速度更快的central镜像,或者你想覆盖central仓库配置,或者你想为所有POM使用唯一的一个远程仓库(这个远程仓库代理的所有必要的其它仓库),你可以使用settings.xml中的mirror配置。

以下的mirror配置用maven.net.cn覆盖了Maven自带的central:

Xml代码 

  1. <settings>  
  2. ...   
  3.   <mirrors>  
  4.     <mirror>  
  5.       <id>maven-net-cn</id>  
  6.       <name>Maven China Mirror</name>  
  7.       <url>http://maven.net.cn/content/groups/public/</url>  
  8.       <mirrorOf>central</mirrorOf>  
  9.     </mirror>  
  10.   </mirrors>  
  11. ...   
  12. </settings>  

[xml] view plain copy

 

  1. <settings>  
  2. ...  
  3.   <mirrors>  
  4.     <mirror>  
  5.       <id>maven-net-cn</id>  
  6.       <name>Maven China Mirror</name>  
  7.       <url>http://maven.net.cn/content/groups/public/</url>  
  8.       <mirrorOf>central</mirrorOf>  
  9.     </mirror>  
  10.   </mirrors>  
  11. ...  
  12. </settings>  

 

这里唯一需要解释的是<mirrorOf>,这里我们配置central的镜像,我们也可以配置一个所有仓库的镜像,以保证该镜像是Maven唯一使用的仓库:

Xml代码 

  1. <settings>  
  2. ...   
  3.   <mirrors>  
  4.     <mirror>  
  5.       <id>my-org-repo</id>  
  6.       <name>Repository in My Orgnization</name>  
  7.       <url>http://192.168.1.100/maven2</url>  
  8.       <mirrorOf>*</mirrorOf>  
  9.     </mirror>  
  10.   </mirrors>  
  11. ...   
  12. </settings>  

[xml] view plain copy

 

  1. <settings>  
  2. ...  
  3.   <mirrors>  
  4.     <mirror>  
  5.       <id>my-org-repo</id>  
  6.       <name>Repository in My Orgnization</name>  
  7.       <url>http://192.168.1.100/maven2</url>  
  8.       <mirrorOf>*</mirrorOf>  
  9.     </mirror>  
  10.   </mirrors>  
  11. ...  
  12. </settings>  

关于更加高级的镜像配置,可以参考:http://maven.apache.org/guides/mini/guide-mirror-settings.html。

http://blog.csdn.net/joewolf/article/details/4876604

 

时间: 2024-08-28 07:04:20

maven repository的相关文章

maven添加非官方jar包到本地库(maven: install an external jar into local maven repository)

原文:http://jiajun.iteye.com/blog/603517 解决了我的问题,内容如下:   Sometimes, you project will have dependency on a jar which is not in official maven repository , and maybe it is propriety jar file which will never be part of maven repository . In this case, yo

Sonatype OSS Maven Repository Usage Guide

原文:https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide Sonatype OSS Maven Repository Usage Guide Attachments:4 Added by Juven Xu, last edited by Joel Orlina on Jun 05, 2013  (view change) 1. Introduction 1a. Terms o

Maven dependency and repository

我们看一个最常见到的例子: <project> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> &l

Maven里面mirror元素和repository元素的作用

问题描述 mirror 是做什么的?repository是做什么的?2者有什么联系和区别呢? 问题补充:cwx714 写道 解决方案 简单点来说,repository就是个仓库.maven里有两种仓库,本地仓库和远程仓库.远程仓库相当于公共的仓库,大家都能看到.本地仓库是你本地的一个山寨版,只有你看的到,主要起缓存作用.当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有.如果有则直接返回,否则会向远程仓库请求,并做缓存.你也可以把你做的东西上传到本地仓库给你本地自己用,或上传到远程仓库,供

maven sonatype相关网站

1.Sonatype OSS Maven Repository Usage Guide  https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide 2.Maven: The Complete Reference  Table of Contents    http://www.sonatype.com/books/mvnref-book/reference/

使用Maven的archetype快速生成一个新项目

Maven的archetype Plugin可能大家都听过,但不一定都能很好地用好它.缺省地如果你使用 mvn archetype:generate 会从maven的Repository里查找所有支持的arche types,大概有500~600个.正因为是太多了,所以查找起来很是不方便. 其实平时常用的arche type也就那么几个.像我会用到的: simple start web app Groovy basic 很自然的就会考虑,是不是能什么简便的方法只需要从这3个组成的list里选择就

Maven入门指南(二)

原文链接 | 译文链接 | 译者:nkcoder | 审校:方腾飞 Maven目录结构 Maven有一个标准的目录结构.如果你在项目中遵循Maven的目录结构,就无需在pom文件中指定源代码.测试代码等目录. Maven的目录结构布局,参考Maven标准目录结构介绍 以下为最重要的目录: - src - main - java - resources - webapp - test - java - resources - target src目录是源代码和测试代码的根目录.main目录是应用的

MAVEN常用命令

Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName -DartifactId=projectName 2. 创建Maven的Web项目: mvn archetype:create -DgroupId=packageName -DartifactId=

maven学习(中)- 私服nexus搭建

接上回继续,相信大家对maven每次都联网从国外站点下载依赖项的龟速网络已经不坎忍受了,今天先来看看如何搭建"仓库私服",目前nexus是使用比较广泛的私服软件之一,下面将介绍基本用法:   一.到nexus官网下载最新版 1.1 下载地址:http://www.sonatype.org/downloads/nexus-latest-bundle.zip (目前最新版本是2.7.2-03) (2015-07-02注: 上面的下载地址好象已经失效了,新的地址为 http://www.so