maven仓库

本文介绍了Maven仓库的概念、布局及分类,包括本地仓库与远程仓库的工作原理,详细讲解了如何配置远程仓库及其认证信息,同时解释了快照版本的使用场景。

一、概述

由于maven坐标机制,任何maven项目使用任何一个构件的方式都是完全相同的,在此基础上,maven可以在某个位置统一存储所有maven项目共享的构件,这个统一位置就是仓库。

二、仓库的布局

假设groupId=org.tv、artifactId=test、version=1.0、classifier=jdk15、packaging=jar,其对应的路径应该为org/tv/test/1.0/test-1.0-jdk15.jar

三、仓库的分类

1、对于maven来说仓库分为两类:本地仓库和远程仓库。当maven根据坐标寻找的时候先查看本地仓库,如果本地仓库存在此构件就可以直接使用;如果本地仓库不存在此构件或者需要查看是否有更新的构件版本,maven就会去远程仓库查找,发现需要的构件后下载到本地仓库再使用。如果本地和远程都没有,就会报错。
2、中央仓库是maven核心自带的远程仓库,它包含了绝大部分开源的构件,在默认配置下,当本地仓库没有maven需要的构件时,它会尝试从中央仓库下载。
3、私服是另外一种远程仓库,在局域网络内架设一个私有的仓库服务器,用 其代理所有的外部的远程仓库。内部的项目还能部署到私服上供其他项目使用。
4、不管是在windows还是在linux上,每个用户在自己的用户目录下都有一个路径名称为.m2/repository/的仓库目录。linux中该文件默认是隐藏的,可以使用ls -a命令显示隐藏文件或者目录。
用户可自定义本地仓库目录的地址,可以编辑~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址:

<settings>
    <localRepository>D:\java\repository\</localRepository>
</settings>

默认情况下,~/.m2/settings.xml文件是不存在的,需要从maven安装目录复制$M2_HOME/conf/settings.xml文件再进行编辑。

四、远程仓库的配置

1、修改远程仓库
下载的settings.xml中都包含有一个默认的中央仓库地址,如果默认的中央仓库无法满足项目的需求。可以在POM中配置该仓库,例如JBoss Maven仓库:

<project>
    <repositories>
        <repository>
            <id>jboss</id>
            <name>JBoss Repository</name>
            <url>http://repository.jboss.com/maven2/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </snapshots>
            <layout>default</layout>
        </repository>
    </repositories>
</project>

其中releases的enabled值为true,表示开启JBoss仓库的发布版本下载支持,snapshots的enabled为false,表示关闭仓库的快照版本下载支持。updatePolicy来配置更新频率,never-从不,always-每次构件都检查,interval:X-每个X分钟检查一次。元素checksumPolicy用来配置maven检查检验和文件的策略,默认warn-输出警告信息,fail-让构建失败,ignore-完全忽略校验和错误。
2、远程仓库认证
认证信息必须配置在settings.xml中:

<settings>
    <servers>
        <id>my-proj</id>
        <username>user</username>
        <password>pwd</password>
    </servers>
</settings>

3、部署至远程仓库
maven能将项目生成的构件部署到远程仓库中,编辑项目的pom.xml文件如下:

<project>
    <distributionManagement>
        <repository>
            <id>proj-releases</id>
            <name>Proj</name>
            <url>http://192.168.1.100/content/repositories/proj-releases</url>
    </repository>
    <snapshotRepository>
        <id>proj-snapshot</id>
        <name>Proj snapshot</name>
        <url>http://192.168.1.100/content/repositories/proj-snapshot</url>
    </snapshotRepository>
    </distributionManagement>
</project>

repository表示的是发布构件的仓库,snapshotRepository表示发布快照的仓库地址。id为远程仓库的唯一标识,name是为了方便阅读。

五、快照版本

快照版本存在不稳定性,例如maven-SNAPSHOT-2.0.jar快照版本值应该在公司内部的项目或者模块间依赖使用。以为这个时候,公司对于这些快照版本的依赖具有完全的理解和控制权。项目不应该依赖与任何公司外部的快照版本,由于快照版本不稳定的原因,这样的依赖会存在不稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值