坐标和构建是一个构件在Maven世界中的逻辑表示方式,而其物理表示方式是文件。
Maven通过仓库来统一管理这些文件

什么是Maven仓库?

在Maven世界中,任何一个依赖,插件或者项目构建的输出,都可以称为构建,任何一个构建都有一组坐标唯一标识。
得益于坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的,在此基础上,Maven可以在某个位置统一存储所有Maven项目共享的构件,这个统一的位置就是仓库.
这样Maven项目就可以不再各自存储其依赖文件,只需要声明这些依赖的坐标,在需要的时候,Maven会自动根据坐标找到仓库中的构件并使用。

仓库的分类

对于Maven来说,仓库分为两类:本地仓库和远程仓库
使用顺序为,先查找本地仓库,若不存在或要寻找更高的版本,则到远程仓库中寻找到后,下载到本地仓库再使用,如果都没有,则报错

本地仓库

一般情况下,在Maven项目目录下,没有诸如lib/这样用来存放依赖文件的目录。
当Maven在执行编译或测试时,如果需要使用依赖文件,它总是基于坐标使用本地仓库的依赖文件
一般情况下,每个用户在自己的用户目录下都有一个路径名为.m2/repository/的仓库目录

远程仓库

远程仓库有很多:

  • 中央仓库:默认的远程仓库,Maven的安装文件自带了中央仓库的配置,包含了这个世界上绝大多数流行的开源Java构件
  • 私服:一种特殊的远程仓库,架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用

远程仓库的那些事

远程仓库的配置
<project>
...
<repositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
<layout>default</layout>
</repository>
</repositories>
</project>
  • updatePolicy 用来配置Maven从远程仓库检查更新的频率
  • checksumPolicy 用来配置Maven检查检验和文件的策略

远程仓库的认证

大部分远程仓库无须认证就可以访问,但有时处于安全方面的考虑,需要提供一些认证信息才能访问一些远程仓库。
配置认证信息应该在settings.xml中,而不是POM中(因为settings.xml一般只放在本机中)

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

这里的id需要和pom中的id相同

部署至远程仓库

<project>
...
<distributionManagement>
<repository>
<id>proj-release</id>
<name>Proj Release Repository</name>
<url>http://192.168.1.100/content/repositories/proj-releases</url>
</repository>
<snapshotRepository>
<id>proj-snapshots</id>
        <name>Proj Snapshots Repository</name>
<url>http://192.168.1.100/content/repositories/proj-snapshots</url>
</snapshotRepository>
</distributionManagement>
</project>

然后执行mvn clean deploy,Maven将会将项目构建输出的构建部署到配置对应的远程仓库

快照版本

快照版本对应了大量的带有不同时间戳的构建。

快照版本只应该在组织内部的项目或模块间依赖使用

Maven4-仓库的更多相关文章

  1. 本地maven仓库使用及配置

    本地仓库的创建 下载 nexus-2.11.4-01-bundle.zip 解压并运行C:\nexus-2.11.4-01-bundle\nexus-2.11.4-01\bin\jsw\windows ...

  2. idea初使用之配置使用maven仓库

    idea使用的理由已经无需多说.现在已经超过了eclipse.java开发种占有44%.第一次使用上手还是挺难的.跟用惯了myeclipse的我来说.对于project的概念深入人心.还理解不了它的M ...

  3. maven 仓库搜索添加需要的jar包

    可用仓库网址: http://search.maven.org/#browse http://mvnrepository.com/ http://repository.sonatype.org/ind ...

  4. Maven如何手动添加依赖的jar文件到本地Maven仓库

    大家肯定遇到过想在pom文件中加入自己开发的依赖包,这些包肯定是不是在Maven仓库(http://repo1.maven.org/maven2/)的.那我们怎么将那些不存在Maven仓库中的包加入到 ...

  5. 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

    使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...

  6. nexus建立maven仓库私服及Snapshots、release的版本管理

    环境搭建   1.linux安装maven   wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.0.5/binaries/apache-mave ...

  7. Maven如何手动添加jar包到本地Maven仓库

    Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构 ...

  8. Maven手动增加依赖jar到本地Maven仓库中

    Apache Maven是一个项目管理及自动构建工具,有APache软件基金会提供.我们只要配置成功后就可以通过配置pom.xml添加所需依赖的jar包和类库,因为这些类库已经在我们配置的Maven仓 ...

  9. 手动将jar添加到maven仓库中

     1.将jar放到E:\workspace\lib中.如下图: 2.编写pom.xml文件,定义jfinal的坐标. <project xmlns="http://maven.ap ...

  10. [转]Maven如何手动添加jar包到本地Maven仓库

     Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项 ...

随机推荐

  1. 圆形图片 ImageView

    package com.example.m_evolution; import android.content.Context; import android.graphics.Bitmap; imp ...

  2. 【c# 数据库】对数据库进行增删查改

    1.DataGridView链接数据库 2.链接数据库 using System.Data.SqlClient; SqlConnection con = null; //创建SqlConnection ...

  3. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对   描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们 ...

  4. Ubuntu 16.04 安装的那点事

    通常,Ubuntu都是与windows共存——安装成双系统的 如果在虚拟机上安装,请参照 https://blog.csdn.net/wyx100/article/details/51582617 U ...

  5. 11.20 正则表达式 断言(?=exp)

    今天看源代码,研究了一下qz写的这个方法: // 添加逗号分隔,返回为字符串 comma: function(length) { ) length = ; var source = ('' + thi ...

  6. Java多线程02(线程安全、线程同步、等待唤醒机制)

    Java多线程2(线程安全.线程同步.等待唤醒机制.单例设计模式) 1.线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量 ...

  7. laravel安装laravel-ide-helper扩展进行代码提示(二)

    一.扩展的地址 https://github.com/barryvdh/laravel-ide-helper 二.安装扩展 1.引入库: composer require barryvdh/larav ...

  8. 关于egg.js的安全延伸思考

    我看到全部的安全基于围绕http来操作,那么如果我只用websocket传输数据,是不是就会好很多?

  9. 实现一个简易版RPC

    上篇博客主要介绍了dubbo的使用,这篇文章主要深入rpc的核心原理 准备知识: 1 java 网络编程(这里使用的bio) 2 java动态代理 3 反射 ===================== ...

  10. 解决拼音输入法会触发input事件的问题

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...