Maven web项目创建和Maven依赖仓库介绍

前面一篇文章介绍了Maven的简介以及安装配置,本文主要讲解Maven的坐标、依赖和仓库。

创建Maven Web项目

1、打开IDEA软件,点击File-->New-->project,出现下图所示:


2、按上图红色区域依次操作,出现如下图所示,输入项目名称,选择项目路径,点击Next按钮。


3、选择Maven安装路径,Maven配置文件路径,Maven本地库路径,最后点击Finish按钮。


4、创建完成后如下所示,发现没有java目录,右键点击main文件夹-->选择java文件夹,到此Maven web项目已经创建成功了。


约定配置

Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能地遵守这样的目录结构,如下所示:


Maven坐标

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构件,声明项目依赖等等。

Maven中引入了坐标的概念,每个构件都有唯一的坐标。maven中构件坐标是通过一些元素定义的,他们是groupId、artifactId、version、packaging、classifier等。

  • goupId:定义当前构件所属的组,通常与域名反向一一对应。

  • artifactId:项目组中构件的编号。

  • version:当前构件的版本号,每个构件可能会发布多个版本,通过版本号来区分不同版本的构件。

  • package:定义该构件的打包方式,比如我们需要把项目打成jar包,采用 java -jar 去运行这个jar包,那这个值为jar;若当前是一个web项目,需要打成war包部署到tomcat中,那这个值就是war,可选(jar、war、ear、pom、maven-plugin),比较常用的是jar、war、pom。

Maven导入依赖的构件通过坐标信息放入dependencies元素中。dependencies元素中可以包含多个 dependency ,每个 dependency 就表示当前项目需要依赖的一个构件的信息。

  • dependency中groupId、artifactId、version是定位一个构件必须要提供的信息,所以这几个是必须的,

  • type:依赖的类型,表示所要依赖的构件的类型,对应于被依赖的构件的packaging。大部分情况下,该元素不被声明,默认值为jar,表示被依赖的构件是一个jar包。

  • scope:依赖的范围

  • option:标记依赖是否可选

  • exclusions:用来排除传递性的依赖

Maven依赖范围

java中编译代码、运行代码都需要用到classpath变量,classpath用来列出当前项目需要依赖的jar包。maven用到classpath的地方有:编译源码、编译测试代码、运行测试代码、运行项目。

编译、测试、运行需要的classpath对应的值可能是不一样的,这个maven中的scope可以帮我们解决这方面的问题,scope是用来控制被依赖的构件与classpath的关系(编译、打包、运行所用到的classpath),scope有以下几种值:

  • compile:编译依赖范围,如果没有指定,默认使用该依赖范围,对于编译源码、编译测试代码、测试、运行4种classpath都有效。

  • test:测试依赖范围,使用此依赖范围的maven依赖,只对编译测试、运行测试的classpath有效,在编译主代码、运行项目时无法使用此类依赖。

  • provide:已提供依赖范围。表示项目的运行环境中已经提供了所需要的构件,对于此依赖范围的maven依赖,对于编译源码、编译测试、运行测试中classpath有效,但在运行时无效。

  • runtime:运行时依赖范围,使用此依赖范围的maven依赖,对于编译测试、运行测试和运行项目的classpath有效,但在编译主代码时无效。

  • system:系统依赖范围,该依赖与classpath的关系,和provided依赖范围完全一致。但是,使用system范围的依赖时必须通过systemPath元素显示第指定依赖文件的路径。这种依赖直接依赖于本地路径中的构件,建议谨慎使用。

Maven的依赖调节功能有两个原则:路径最近原则和最先声明原则。

Maven仓库

Maven仓库是基于简单文件系统存储的,主要分为两大类:本地仓库和远程仓库。远程仓库又分为中央仓库,私服和其他公共远程仓库。

当maven根据坐标寻找构件的时候,会首先查看本地仓库,如果本地仓库存在,则直接使用;如果本地不存在,maven会去远程仓库中查找,如果找到了,会将其下载到本地仓库中进行使用,如果本地和远程仓库都没有找到构件,maven会报错,构件只有在本地仓库中存在了,才能够被maven项目使用。

本地仓库

默认情况下,IDEA中maven本地仓库默认地址是 ~/.m2/respository 目录,这个默认我们也可以在~/.m2/settings.xml 文件中进行修改:。本地安装了Maven,如果使用安装的Maven可以修改Maven安装目录下config目录下的settings.xml文件。

中央仓库

中央仓库是maven社区为我们提供的,是maven内置的一个默认的远程仓库地址,不需要用户去配置。这个地址是Central Repository: (apache.org)。中央仓库还为我们提供了一个检索构件的站点:Maven Central Repository Search。

私服

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务器,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。

远程仓库的配置

1、在pom.xml中配置。

    

aliyun-releases
http://maven.aliyun.com/nexus/content/groups/public

true


false

在repositories元素下,可以使用repository子元素声明一个或者多个远程仓库。

repository元素说明:

  • id:远程仓库的一个标识,中央仓库的id是 central ,所以添加远程仓库的时候,id不要和中央仓库的id重复,会把中央仓库的覆盖掉

  • url:远程仓库地址

  • releases:主要用来配置是否需要从这个远程仓库下载稳定版本构件

  • snapshots:主要用来配置是否需要从这个远程仓库下载快照版本构件

2、通过镜像的方式在settings.xml中配置。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容