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. Codeforces627A【数学·有意思】

    题意: 求有多少对( a , b ),a+b=s,a^b=x.(正整数) 思路: a+b=a^b+a&b*2; #include <iostream> #include <c ...

  2. DFS系列 POJ(自认为的讲解)

    C - Sum It Up POJ1564 题意: 给你一个N,然后给你一堆数The numbers in each list appear in nonincreasing order, and t ...

  3. 洛谷 P2296 寻找道路【bfs+spfa】

    反向建边bfs出不能到t的点,然后对每个能到这些点的点打上del标记,然后spfa的时候不经过这些点即可 #include<iostream> #include<cstdio> ...

  4. CentOS7下如何正确安装并启动Docker(图文详解)

    我使用了CentOS 7操作系统,可以非常容易地安装Docker环境.假设,下面我们都是用root用户进行操作,执行如下命令进行准备工作: yum install -y yum-utils yum-c ...

  5. Helvetic Coding Contest 2017 online mirror (teams allowed, unrated) A

    Description Your search for Heidi is over – you finally found her at a library, dressed up as a huma ...

  6. 线段树(单点更新) HDU 1754 I Hate It

    题目传送门 /* 线段树基本功能:区间最大值,修改某个值 */ #include <cstdio> #include <cstring> #include <algori ...

  7. Android APK加壳技术方案

    Android APK加壳技术方案[1] Android APK加壳技术方案[2]

  8. RHEL 6.5----apr-util1.6执行make时报错

    报错信息 ]: Entering directory `/usr/local/src/apr-util-' /bin//build-/libtool --silent --mode=compile / ...

  9. P2006 赵神牛的游戏

    题目描述 在DNF 中,赵神牛有一个缔造者,他一共有k点法力值,一共有m个技能,每个技能耗费的法力值为a[i],可以造成的伤害为b[i],而boss 的体力值为n,请你求出它放哪个技能,才可以打死bo ...

  10. 解决IDEA Tomcat控制台乱码问题

    1.在Tomcat Server的配置中添加一句命令: 神秘代码: -Dfile.encoding=UTF-8 重启Tomcat,ok. 如果还不行,则需要: 1.在Settings中修改文件编码 2 ...