maven仓库详解
来源:互联网 发布:js生成随机数 编辑:程序博客网 时间:2024/05/20 04:13
1、何为maven仓库
在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库。(仓库就是存放依赖和插件的地方)任何的构件都有唯一的坐标,Maven根据这个坐标定义了构件在仓库中的唯一存储路径,
解读Maven在仓库中的存储路径:
1.基于groupId准备路径,将句点分隔符转成路径分隔符,就是将 "." 转换成 "/" ; example: org.testng --->org/testng
2.基于artifactId准备路径,将artifactId连接到后面:org/testng/testng
3.使用version准备路径,将version连接到后面:org/testng/testng/5.8
4.将artifactId于version以分隔符连字号连接到后面:org/testng/testng/5.8/tesng-5.8
5.判断如果构件有classifier,就要在 第4项 后增加 分隔符连字号 再加上 classifier,org/testng/testng/5.8/tesng-5.8-jdk5
6.检查构件的extension,如果extension存在,则加上句点分隔符和extension,而extension是由packing决定的,org/testng/testng/5.8/tesng-5.8-jdk5.jar
到这里我们就明白了Maven 对于构件存储的细节。
2、仓库分类
- 中央仓库
- 私服
- 其他公共库
3、本地仓库
顾名思义,就是Maven在本地存储构件的地方。注:maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建,maven本地仓库的默认位置:无论是Windows还是Linux,在用户的目录下都有一个.m2/repository/的仓库目录,这就是Maven仓库的默认位置,如何更改maven默认的本地仓库的位置:这里要引入一个新的元素:localRepository,它是存在于maven的settings.xml文件中。
3.1更改配置用户范围的本地仓库
先在/.m2/目录下创建settings.xml文件,然后在~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository--> <localRepository>D:/myworkspace/maven_repository</localRepository> <!-- interactiveMode | This will determine whether maven prompts you when it needs input. If set to false, | maven will use a sensible default value, perhaps based on some other setting, for | the parameter in question. | | Default: true <interactiveMode>true</in在M2_HOME/conf/settings.xml(D:\soft\maven\apache-maven-3.3.3\confsettings.xml\settings.xml)中更改配置,更改配置的方法同上注:此时更改后,所有的用户都会受到影响,而且如果maven进行升级,那么所有的配置都会被清除,所以要提前复制和备份M2_HOME/conf/settings.xml文件故:一般情况下不推荐配置全局的settings.xml...这时候,maven的本地仓库地址就变成了 D:\maven_new_repository ,注:此时配置的maven的本地仓库是属于用户范围的。默认情况下,~/.m2/settings.xml文件是不存在的,用户需要从maven安装目录复制$M2_HOME/conf/settings.xml文件再进行编辑。
3.2更改配置全局范围的本地仓库
注:此时更改后,所有的用户都会受到影响,而且如果maven进行升级,那么所有的配置都会被清除,所以要提前复制和备份M2_HOME/conf/settings.xml文件,故:一般情况下不推荐配置全局的settings.xml。
4、远程仓库
4.1中央仓库
由于最原始的本地仓库是空的,maven必须知道至少一个可用的远程仓库,才能在执行Maven命令的时候下载到需要的构件。中央仓库是默认的远程仓库,maven在安装的时候,自带的就是中央仓库的配置。所有的maven项目都会继承超级pom。包含下面配置的pom我们就称为超级pom。
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
4.2私服
5、远程仓库的配置
配置远程仓库将引入新的配置元素:<repositories> <repository>,在<repositories>元素下,可以使用 <repository>子元素声明一个或者多个远程仓库。例如:
<repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <releases> <updatePolicy>daily</updatePolicy><!-- never,always,interval n --> <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy><!-- fail,ignore --> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </repository> </repositories>如何将生成的项目部署到远程仓库?
完成这项工作,也需要在POM中进行配置,这里有新引入了一个元素:<distributionManagement>。
distributionManagement包含了2个子元素:repository和snapshotRepository, 前者表示发布版本构件的仓库,后者表示快照版本的仓库,这两个元素都需要配置 id(该远程仓库的唯一标识),name,url(表示该仓库的地址)向远程仓库中部署构件,需要进行认证。配置同上。
<distributionManagement> <repository> <id>releases</id> <name>public</name> <url>http://59.50.95.66:8081/nexus/content/repositories/releases</url> </repository> <snapshotRepository> <id>snapshots</id> <name>Snapshots</name> <url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url> </snapshotRepository></distributionManagement>
配置正确后运行: mvn clean deploy
6、镜像
如果仓库X可以提供仓库Y所存储的所有内容,那么就可认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都能够从它的镜像获取。举个例子,http://maven.oschina.net/content/groups/public/ 是中央仓库http://repo1.maven.org/maven2/ 在中国的镜像,由于地理位置的因素,该镜像往往能够提供比中央仓库更快的服务。因此,可以配置Maven使用该镜像来替代中央仓库。编辑settings.xml,代码如下:
<mirrors> <mirror> <id>maven.oschina.net</id> <name>maven mirror in China</name> <url>http://maven.oschina.net/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror></mirrors>该例中,mirrorOf的值为central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,用户也可以使用同样的方法配置其他仓库的镜像。id表示镜像的唯一标识符,name表示镜像的名称,url表示镜像的地址。
关于镜像的一个更为常见的用法是结合私服。由于私服可以代理任何外部的公共仓库(包括中央仓库),因此,对于组织内部的Maven用户来说,使用一个私服地址就等于使用了所有需要的外部仓库,这可以将配置集中到私服,从而简化Maven本身的配置。在这种情况下,任何需要的构件都可以从私服获得,私服就是所有仓库的镜像。这时,可以配置这样的一个镜像:
<!--配置私服镜像--><mirrors> <mirror> <id>nexus</id> <name>internal nexus repository</name> <url>http://183.238.2.182:8081/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors>
- Maven仓库详解
- Maven仓库详解
- Maven仓库详解
- Maven仓库详解
- maven仓库详解
- Maven三种仓库详解
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库--本地仓库和远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven详解之仓库------本地仓库、远程仓库
- Maven仓库:本地仓库 vs 远程仓库 详解
- 修改Tomcat内存大小
- 《程序员的自我修养》读书笔记
- 文件 I/O缓冲流
- 组合数(dfs)
- [大数据入门-jQuery]Day17-jQuery对文档的操作
- maven仓库详解
- 了解java .lang 包,java.util包等常用包
- 【算法分析与设计】【第十四周】738. Monotone Increasing Digits
- GIT 删除指定COMMIT提交
- 【Java作业】Week10——多线程
- 安卓定位开发实例
- NOIP2017 游记 Day2
- 常良项目opencv调试
- js实现对上传图片进行压缩并且预览