欢迎大家来到IT世界,在知识的湖畔探索吧!
前面一篇文章介绍了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 文件中进行修改:<localRepository>本地仓库地址</localRepository>。本地安装了Maven,如果使用安装的Maven可以修改Maven安装目录下config目录下的settings.xml文件。
中央仓库
中央仓库是maven社区为我们提供的,是maven内置的一个默认的远程仓库地址,不需要用户去配置。这个地址是Central Repository: (apache.org)。中央仓库还为我们提供了一个检索构件的站点:Maven Central Repository Search。
私服
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务器,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。
远程仓库的配置
1、在pom.xml中配置。
<repositories>
<!-- 远程仓库地址 -->
<repository>
<id>aliyun-releases</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
欢迎大家来到IT世界,在知识的湖畔探索吧!
在repositories元素下,可以使用repository子元素声明一个或者多个远程仓库。
repository元素说明:
- id:远程仓库的一个标识,中央仓库的id是 central ,所以添加远程仓库的时候,id不要和中央仓库的id重复,会把中央仓库的覆盖掉
- url:远程仓库地址
- releases:主要用来配置是否需要从这个远程仓库下载稳定版本构件
- snapshots:主要用来配置是否需要从这个远程仓库下载快照版本构件
2、通过镜像的方式在settings.xml中配置。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/36051.html