2.1 Maven坐标

Maven坐标是Maven用来表示一个组件依赖的标示。

Maven通过下面几个元素定义坐标:groupId、artifactId、version、packaging、classifier.

groupId:定义当前Maven项目隶属的实际项目。不应该是组织或公司(一个公司有很多项目,每个项目有很多模块)。

artifactId:定义实际项目的一个Maven模块,推荐使用实际项目名称作为前缀。

version:定义Maven项目当前所处的版本。

packaging:定义Maven项目的打包方式,可选的有:jar(默认)、warpom,不同的打包方式会影响构建的生命周期。

classifier:定义构建输出的一些附属构建,如javadocsources

2.2 Maven仓库

Maven坐标是一个构件的逻辑表示,构件的物理表示是文件,Maven通过仓库来统一管理这些文件。

得益于坐标机制,Maven项目能够以统一的方式来使用任何构件,在此基础上,Maven可以在某个位置统一存储所有Maven项目共享的构建,这个统一位置就是仓库。

2.2.1 仓库的分类

Maven中的仓库分为:本地仓库和远程仓库。

Maven根据坐标寻找构件时,先查看本地仓库是否存在该构件,存在则直接使用;否则就查找远程仓库,找到之后就下载到本地仓库;本地和远程都没找到,直接报错。

中央仓库是Maven核心自带的远程仓库,含绝大多数开源的构件;

私服是在局域网搭建的仓库服务器,用于代理外部的远程仓库,可以节省带宽和时间,内部的项目还能部署到私服供其他项目使用;使用私服可以加速Maven构建以及提高稳定性,内网访问不需要依赖于网络。

其他公共服,如阿里云等。

本地仓库:配置路径${M2_HOME}/conf/settings.xml,默认是${user.home}/.m2/repository.

构件进入本地仓库有两种方式:Maven从远程仓库下载到本地仓库;通过在项目执行mvn install安装到本地。

Maven而言,用户的本地仓库只有一个,但可以配置访问很多远程仓库。而中央仓库是默认的远程仓库,在$M2_HOME/lib/maven-model-builder-{version}.jarorg/apache/maven/model/pom-4.0.0.xml文件定义了,该POM也被称为超级POM

2.2.2 仓库的布局

构件在Maven仓库里的存储路径为:{groupId}/{artifactId}/{version}/{artifactId-version.packaging}

2.2.3 远程仓库的配置

通过POM文件的<repositories><repository>元素可以配置远程仓库,如:

<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>

     </snapshots>

     <layout>default</layout>

   </repository>

 </repositories>

:必须是唯一的,默认的中央仓库id是central,如果使用了该id,会覆盖中央仓库配置。

:执行仓库的地址

:开发发布版本支持

:关闭快照版本支持

:值为default表示仓库的布局是Maven 2及Maven 3,而不是Maven 1.

相比于发布版本,快照版本还有下面两个属性:

<snapshots>

 <enabled>true</enabled>

 <updatePolicy>daily</updatePolicy>

 <checksumPolicy>ignore</checksumPolicy>

</snapshots>

:更新策略,默认daily,可选择有neveralwaysinterval:X (X分钟检查一次)。

Maven检查校验和的策略,默认值是warn(校验不通过时警告),可选择还有fail(校验不通过时构建失败)、ignore(忽略校验错误)

2.3 镜像

如果仓库X可以提供仓库Y存储的所有内容,则认为X是Y的一个镜像。关于镜像的配置可以在${M2_HOME}/conf/settings.xml中进行配置:

<mirrors>

  <mirror>

     <id>nexus-aliyun</id>

     <mirrorOf>*</mirrorOf>

     <name>Nexus aliyun</name>

     <url>http://maven.aliyun.com/nexus/content/groups/public</url>

   </mirror>

 </mirrors>

:匹配远程仓库的规则,匹配成功,则使用该镜像进行代理

Remark:由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务时,Maven仍将无法访问被镜像仓库,因而将无法下载构件。

Maven实战读书笔记(二):Maven坐标与仓库的更多相关文章

  1. maven实战读书笔记(二)

    一个Spring加载属性的工具类,指定目标位置之后可以用${}的方式加载配置文件 测试maven工程发送email的例子:运行成功的例子—github 常用的命令: mvn clean compile ...

  2. Maven实战读书笔记(七):Maven常用功能

    7.1.资源排除 <resources> <!-- 启动过滤,包含的文件会被过滤掉 --> <resource> <directory>src/main ...

  3. Maven实战读书笔记(三):Maven依赖

    3.1 依赖的配置 一个依赖声明可以包含下面元素: <dependencies> <dependency> <groupId></groupId> &l ...

  4. Maven实战读书笔记(五):聚合与继承

    Maven的聚合特性能够把项目的各个模块聚合在一起构建,而继承特性则能够帮助抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能促进各个模块配置的一致性. 5.1 聚合 Maven聚合也称多模块 ...

  5. Maven实战读书笔记(四):Maven生命周期与插件

    Maven的生命周期是对所有构建过程的抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有构建步骤. Maven的生命周期是抽象的,其实际行为是由插件来完成 ...

  6. Maven实战读书笔记(一):Maven概述

    1.1 Maven是什么,能做什么 Maven是一个跨平台的项目管理工具,主要服务于Java平台的项目构建.依赖管理和项目信息管理. Maven的用途之一是项目构建,能够自动化构建过程,从清理.编译. ...

  7. maven实战读书笔记(三)

    maven将一系列的步骤都封装为一系列的插件,运行命令后一系列的插件运行

  8. maven实战读书笔记(一)

    环境变量设置 MAVEN_HOME:G:\maven-3.2\apache-maven-3.2.5 Path: G:\maven-3.2\apache-maven-3.2.5\bin 其实正确的设置应 ...

  9. Maven实战读书笔记(六):Maven灵活构建

    Maven为了支持构建的灵活性,内置了3大特性,即:属性.Profile和资源过滤. 6.1 Maven属性 Maven的属性与Java代码的常量有异曲同工之妙,都是为了消除重复,对相关内容进行统一管 ...

随机推荐

  1. 【弱的C艹之路。。未完待续】

    [弱的C艹之路] 数据范围 unsigned int 0-4294967295 int 2147483648-2147483647 unsigned long 0-4294967295 long 21 ...

  2. C++ C# 默认对齐是8字节

    C++ C# 默认对齐是8字节 以上,一直以为是4字节,尼玛

  3. pyrcharm 编程规范

    正常变量赋值, 等号左右各一个空格: 参数赋值, 等号左右都没有空格: 注释#后面一个空格 类定义和函数定义,前后各两行,而在类的里面定义成员函数,只需要空一行 文件最后一个空行 变量.函数.类最好都 ...

  4. python之重写父类方法

    #修改父类的方法#重写父类的方法的目的是为了给他扩展功能,父类的方法已经不能满足需求#核心思想就一句话,先调用一下你要重写的父类方法,class Coon(object): #基本类 def __in ...

  5. ubuntu14.04 在Dash中添加条目并把它放到启动器上

    1. 创建studio.desktop,内容如下:注意路径. [Desktop Entry] Version=2.2.3 Name=Android Studio Exec=/home/你的用户名/an ...

  6. 132 Palindrome Partitioning II 分割回文串 II

    给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 符合要求的的最少分割次数.例如,给出 s = "aab",返回 1 因为进行一次分割可以将字符串 s 分 ...

  7. php配置COM组件正常运行

    1. http://www.cnblogs.com/yuanke/p/4973824.html 在php.ini中 a. com.allow_dcom = true b. extension=php_ ...

  8. P1851 好朋友

    题目背景 小可可和所有其他同学的手腕上都戴有一个射频识别序列号码牌,这样老师就可以方便的计算出他们的人数.很多同学都有一个“好朋友” .如果 A 的序列号的约数之和恰好等于B 的序列号,那么 A的好朋 ...

  9. 动态栅格(DEM)图层实现服务端渲染

    PS:此处动态图层指,图层文件都放在经过注册的文件目录里,可以通过文件名动态加载图层 动态加载的矢量图层,可以实现客户端和服务端的定制渲染,但栅格一般是不能再渲染的,以下介绍可行的方法 建立一个很简单 ...

  10. scala 通过jdbc访问mysql

    scala是jvm语言,运行在jvm之上 我们知道jdbc是java访问数据库的技术,那么scala能不能通过jdbc操作数据库呢,答案是可以的 部分代码如下: /** * 获取连接 */ priva ...