之前通过一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,然后讲maven如何编译运行项目。接下来介绍maven中几个比较重要的概念:坐标和仓库。Maven快速入门系列 完整地址:https://www.cnblogs.com/zhangweizhong/category/1771605.html

一、 坐标

maven中,所有的依赖、插件和生成的jar包统称为构件,坐标就是所有的构件的唯一标识。所有构件均通过坐标进行组织和管理。maven 的坐标通过 5 个元素进行定义,其中 groupId、artifactId、version 是必须的,packaging 是可选的(默认为jar),classifier 是不能直接定义的。

  • groupId:定义当前 Maven 项目所属的实际项目,跟 Java 包名类似,通常与域名反向一一对应。
  • artifactId:定义当前 Maven 项目的一个模块,默认情况下,Maven 生成的构件,其文件名会以 artifactId 开头,如 hibernate-core-3.6.5.Final.jar。
  • version:定义项目版本。
  • packaging:定义项目打包方式,如 jar,war,pom,zip ……,默认为 jar。
  • classifier:定义项目的附属构件,如 hibernate-core-3.6.6.Final-sources.jar,hibernate-core-3.6.6.Final-javadoc.jar,其中 sources 和 javadoc 就是这两个附属构件的 classifier。classifier 不能直接定义,通常由附加的插件帮助生成。

项目中pom.xml 文件中定义:

所以,一般我们实际项目的开发过程中,java的包名一般对应groupId,项目名对应artifactId。

二、 仓库

所谓仓库,就是Maven 根据构件的坐标统一存储这些构件的唯一副本的目录。在项目中通过坐标依赖声明,可以方便的引用构件。

Maven 仓库分为本地仓库和远程仓库,Maven寻找构件时,首先从本地仓库找,本地找不到则到远程仓库找,再找不到就报错;在远程仓库中找到了,就下载到本地仓库再使用。

本地仓库是存储在本机的构件仓库,默认地址为:${user.home}/.m2/repository。

中央仓库是 Maven 核心自带的远程仓库,默认地址:http://repo1.maven.org/maven2。除了中央仓库,还有其它很多公共的远程仓库。

私服是架设在本机或局域网中的一种特殊的远程仓库,通过私服可以方便、统一的管理其它所有的外部远程仓库。

实际项目中为方便、统一的管理,一般会创建私服以确保所有的项目环境使用的都是同一个版本的构件,。

1 . 本地仓库

Maven 本地仓库默认地址为:${user.home}/.m2/repository。安装完 Maven ,本地仓库几乎是空的,这时需要从远程仓库下载所需构件。

如何修改本地仓库默认地址?

通过修改 %MAVEN_HOME%/conf/settings.xml 配置文件可以更改本地仓库的位置。

2 . 中央仓库

Maven 配置了一个默认的远程仓库,即中央仓库,找到 %MAVEN_HOME%/lib/maven-model-builder-3.2.1.jar,

打开 org/apache/maven/model/pom-4.0.0.xml 超级POM,所有的项目都会继承这个POM:

  <repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

<id>central</id> 标识中央仓库的唯一标识。
<url> 就是中央仓库的地址。
<snapshots>  配置的是false,就是不下载版本为快照的构件。

中央仓库包含的绝大多数开源项目的构件。基本上平时开发用到的框架这里都能找到。

3. 其他公共远程仓库

除了maven的中央仓库,由于网络的原因,很多其他的大公司也提供了公共的远程仓库,又叫镜像仓库。

修改%MAVEN_HOME%/conf/settings.xml ,默认配置了nexus-aliyun 镜像仓库。

 <mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

注意:如果配置了镜像仓库,那么所有的对中央仓库的访问,都会自动转到镜像仓库。

最后

以上,介绍了Maven的两个重要的概念坐标和仓库。理解起来比较简单,这些是开发者必学必会的基础技能。请大家关注!

Maven快速入门(三)Maven的坐标和仓库的更多相关文章

  1. (4)Maven快速入门_4在Spring+SpringMVC+MyBatis+Oracle+Maven框架整合运行在Tomcat8中

    利用Maven 创建Spring+SpringMVC+MyBatis+Oracle 项目 分了三个项目  Dao   (jar)   Service (jar)   Controller (web) ...

  2. Maven快速入门(二)手动创建maven项目hellomaven

    之前讲过Maven介绍及环境搭建,介绍了maven的作用和如何搭建maven环境.接下来就以一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,最后讲maven如 ...

  3. (1)Maven快速入门_1maven安装

    Maven 快速入门 1.1 Maven官网下载     windows 系统 下载 下图红色框选处. 下载到本地解压, 创建一个本地maven仓库的目录 maven_lib 配置Maven的环境变量 ...

  4. Java实战及解析 — Maven快速入门

    五分钟快速入门 mvn --version mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -Darche ...

  5. Maven快速入门(一)Maven介绍及环境搭建

    做开发的程序员都知道,在系统开发需要各自各样的框架.工具.其中有一种工具不管你是初级程序员还是高级程序员都必须熟练掌握的,那就是项目管理工具(maven.ant.gradle).接下来就总结Maven ...

  6. Maven——快速入门手册(学习记录)

    前言: 前段时间进行了一点maven的入门学习,在这里做个记录,希望能帮到一些正在学习的朋友们.maven版本为3.3.9.希望大家觉得好的点个赞,觉得不好的多提提意见和建议做个交流.这里也贴出我学习 ...

  7. SSM+Maven(教程二):Idea快速入门SSM+Maven框架。

    快速入门须知 这篇文章,直接应用已经搭建好的SSM框架.一般在公司里面,考虑框架的搭建.封装等问题,都由研发经理或者架构师完成,所以对于刚入门的小白来说,在去搭建整合花费的时间会很多很多.对于理解能力 ...

  8. Maven快速入门(四)Maven中的pom.xml文件详解

    上一章,我们讲了Maven的坐标和仓库的概念,介绍了Maven是怎么通过坐标找到依赖的jar包的.同时也介绍了Maven的中央仓库.本地仓库.私服等概念及其作用.这些东西都是Maven最基本.最核心的 ...

  9. Maven 快速入门

    安装 Maven是一个Java工具,因此你的电脑上必须安装有JAVA环境(JDK或者JRE) 首先,从官方下载 Maven ,我这里下载的是 3.5 的版本. 本文是在Mac环境中安装的,首先创建一个 ...

随机推荐

  1. vue.prototype和vue.use的区别和注意点

    1.vue.prototype:实例上挂载属性/方法,例如Vue.prototype.axios = axios; 2.vue.use:引入插件,例如vuex,vue.use(vuex)如图,vue. ...

  2. JDK基本库概述

    看脚下,不断行,莫存顺逆. 剖析java的哪些源码 目前主要是java基本库的一些源码的分析,jvm工具的使用等等,后续可能还会结合hotspot源码来分析jvm原理,当然,这是一个比较高级的主题,根 ...

  3. Day_08【面向对象】扩展案例4_年龄为30岁的老王养了一只黑颜色的2岁的宠物……

    #分析以下需求,并用代码实现: 1.定义动物类 属性: 年龄,颜色 行为: eat(String something)方法(无具体行为,不同动物吃的方式和东西不一样,something表示吃的东西) ...

  4. MySQL 主从复制原理及过程讲解

    mysql主从原理描述,摘自老男孩. 下面简 单描述下 MySQL Replication 复制的原理及过程 . 1.在 Slave 服务器上执行 start slave 命令开启主从复制开关,主从复 ...

  5. [hdu1023]递推

    http://acm.hdu.edu.cn/showproblem.php?pid=1023 如果把栈里面的元素个数表示成状态,每一步(共2 * n步)的状态构成的状态序列的种数就是答案,令dp[i] ...

  6. [csu1392]YY一下

    题意:给定x,求有多少个10^8以内的数满足这个数乘以x以后,最高位到了最低位.设最高位的数字和剩余长度,列等式推理即可. #pragma comment(linker, "/STACK:1 ...

  7. vue mock 模拟接口数据

    日常总结 希望能帮到大家 1 mock/sever.js  //创建服务 let http=require('http') let fs=require('fs') let url=require(' ...

  8. linux --vim 补充 .vimrc

    1.今天发现了一个新的功能.vimrc 1.这个是一个个人配置文件,可以在这个里面首先对vim进行一些设置呢 如果系统没有.vimrc文件,可以自己创建一个,touch .vimrc 举个栗子,我在. ...

  9. js中的栈,堆。

    一.栈和堆 栈(stack):栈会自动分配内存空间,会自动释放,存放基本类型,简单的数据段,占据固定大小的空间. 基本类型:String,Number,Boolean,Null,Undefined 堆 ...

  10. Reflux之Action

    reflux在flux的基础上,去掉了dispatcher. 在Reflux中,每一个Action本身就是一个Publisher(消息发布者),具有消息发布功能:而每一个Store除了作为数据存储之外 ...