maven 坐标
-
Maven坐标
2017-12-20 10:05:08Maven坐标Maven坐标定义了一组标识,它们可以用来唯一标识一个项目,一个依赖,或者Maven
POM里的一个插件,看一下下面的这个POM文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.4.0</modelVersion> <groupId>mavenbook</groupId> <artifactId>mybook</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </denpendency> </denpendencies> </project>
这个项目的坐标:groupId, artifactId, version和packaging。这些组合的标识符拼成了一个项目的坐标,就像任何其它的坐标系统,一个Maven坐标是一个地址,即“空间”里的某个点:从一般到特殊。当一个项目通过依赖,插件或者父项目引用和另外一个项目关联的时候,Maven通过坐标来精确定位一个项目。Maven坐标通常用冒号来作为分隔符来书写,像这样的格式:groupId:artifactId:packaging:version。在上面的pom.xml中,它的坐标可以表示为mavenbook:my-app:jar:1.0-SNAPSHOT.这个符号也适用于项目依赖,我们的项目依赖JUnit的3.8.1版本,它包含了一个对junit:junit:jar:3.8.1的依赖。
groupId
d 团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。来自Sonatype的项目有一个以com.sonatype开头的groupId,而Apache Software的项目有以org.apache开头的groupId。artifactId
在groupId下的表示一个单独项目的唯一标识符。version
一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记。项目的打包格式也是Maven坐标的重要组成部分,但是它不是项目唯一标识符的一个部分。一个项目的groupId:artifactId:version使之成为一个独一无二的项目;你不能同时有一个拥有同样的groupId, artifactId和version标识的项目。
packaging
项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。在其它“Maven化”项目构成的巨大空间中,这四个元素是定位和使用某个特定项目的关键因素。Maven仓库(repositories)(公共的,私有的,和本地的)是通过这些标识符来组织的。当一个项目被安装到本地的Maven仓库,它立刻能被任何其它的项目所使用。而我们所需要做的只是,在其它项目用使用Maven的唯一坐标来加入对这个特定构件的依赖。
-
maven 坐标
2017-03-18 16:18:00maven坐标元素包括:groupId,artifactId,version,packageing,classifier maven 内置中央仓库地址:http://repol.maven.org/maven2 maven 坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的...区唯一标识所有的这些构件jar,war等maven坐标元素包括:groupId,artifactId,version,packageing,classifiermaven 内置中央仓库地址:http://repol.maven.org/maven2maven 坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标。<groupId>org.sonatype.nexus</groupId><artifactId>nexus-indexer</artifactId><version>2.0.0</version><packaging>jar</packaging>groupId:定义当前Maven项目隶属的实际项目。一个实际项目往往会被划分成很多模块,其次groupId不应该对应项目隶属的组织或公司(一个组织下会有很多实际项目)org.sonatype.nexusorg.sonatype表示Sonatype公司建立的一个非盈利组织nexus 表示Nexus这一实际项目,该groupId与域名nexus.sonatype.org对应artifactId:该元素定义实际项目中的一个Maven项目(模块)。推荐的做法是,使用实际项目名称作为artifactId的前缀。比如上例中的artifactId是nexus-indexer,使用了实际项目名nexus作为前缀,这样做的好处是方便寻找实际构件。在默认情况下,Maven生成的构件,其文件名会以artifactId作为开头,如nexus-indexer-2.0.0.jar使用实际项目名称作为前缀之后,就能方便从一个lib文件夹中找到某个项目的一组构件。version:该元素定义Maven项目当前所处的版本,如上例中nexus-indexer的版本是2.0.0需要注意的是,Maven定义了一套完整的版本规范,以及快照(SNAPSHOT)的概念。packaging:该元素定义Maven项目的打包方式。当不定义packaging的时候,Maven会使用默认值jarclassifier:该元素用来帮助定义构件输出的一些附属构件。由附属构件帮助生成,不能直接定义。转载于:https://www.cnblogs.com/xxdfly/p/e326a638bd6a32c13eb85ad775cefeec.html
-
maven坐标
2019-08-20 06:45:23类似于数学中一个坐标在坐标系中唯一定位一个点,maven坐标在仓库中唯一定义一个maven工程。 pom中定义的坐标分两类: 一类是自己本身的坐标,比如我的maven工程中是这样定义的: 另外一类是引入的第三方的maven...类似于数学中一个坐标在坐标系中唯一定位一个点,maven坐标在仓库中唯一定位一个资源。
一、坐标的分类
如下图,以
spring-boot-starter-web
的pom为例,pom中的坐标共有三类:
二、坐标的构成
1.groupId:通常是公司注册的域名的倒写加上项目名,因为一个公司可能有多个项目,所以加上项目名是有必要的。
2.artifactId:通常是项目下模块儿名。
3.version:版本号。
4.packaging:打包方式,有三种,分别是pom、jar、war,默认打的是jar包。
三、根据坐标在仓库中定位资源
以上图中的
spring-boot-starter-web
为例,分析一下坐标与仓库中的资源位置的对应关系:1.首先,解析groupId,如果使用点号分隔的,将点号换成斜线,这里得到org\springframework\boot。
2.然后,解析artifactId,在groupId解析基础上,得到org\springframework\boot\spring-boot-starter-web。
3.然后,加上版本号,在以上的基础上,得到org\springframework\boot\spring-boot-starter-web\2.1.8.RELEASE。
4.最后,加上artifactId-version.packaging,这里是spring-boot-starter-web-2.1.8.RELEASE.jar,在以上的基础上得到org\springframework\boot\spring-boot-starter-web\2.1.8.RELEASE\spring-boot-starter-web-2.1.8.RELEASE.jar。
这里我们就通过这三个坐标得到了仓库中该maven工程的访问路径,在仓库根路径下,通过这个访问路径就能定位到资源了。
-
Maven 坐标
2019-02-23 11:44:57坐标是 Maven 中最为核心的概念 在前一篇博客提到,我们采用了 Maven 方式构建项目之后,取消了各个模块中的 lib 文件夹,不再导入 jar 包到 Lib 文件夹中,而是通过 pom.xml 这个配置文件从仓库中读取 那么问题来了...坐标
- 坐标是 Maven 中最为核心的概念
- 在前一篇博客提到,我们采用了 Maven 方式构建项目之后,取消了各个模块中的 lib 文件夹,不再导入 jar 包到 Lib 文件夹中,而是通过 pom.xml 这个配置文件从仓库中读取
- 那么问题来了:如何在 pom.xml 这个配置文件中精确的定位到你所需要的 jar 呢
- 这里就引入了坐标这个概念(GAV),通过坐标,在互联网上精确的定位到一个所需要的 jar 包
- groupId:定义当前Maven组织名称
- artifactId:定义实际项目名称
- version:定义当前项目的当前版本
坐标查找
-
我们使用的 jar 包的坐标都在一个网站中有具体的引用规范:https://mvnrepository.com/
-
我们以一个各个模块都可能用到的日志记录 jar包:log4j 为例
-
在这个网站的搜索栏内搜索这个 log4j ,就会出现如图所示部分
-
我们点击第二个 Apache Log4j,进入如下界面
-
我们点击最多人使用的 1.2.17 ,进入如下界面
-
红框内的内容即为我们所需要的坐标(依赖),我们在 pom.xml 文件中加入这个坐标,eclipse 或 IDEA 等编辑器就会自动从中央仓库中下载这个 jar 包,并且放入本地仓库,例如
总结
- Maven 通过坐标定位,替代了之前 lib 文件夹中放 jar 包的方式
- 这样做之后,首先各个模块内省去了 Lib 文件夹导包这一步
- 同时,对于不同模块之间都会重复用到的 jar 包,除去第一次需要从互联网上中央仓库下载外,其他时刻只需要从本地仓库中下载即可。
- 这是一种抽取重复类的思想,这种思想在之前的学习种已经见到很多次了,核心部分就是:抽取不同地方复用率高的部分,单独存在,其他部分调用这个存在即可。之前是对代码抽取,这次是对 jar 包抽取,猜测之后可能会对功能抽取。。
-
Maven学习笔记八:Maven坐标和依赖(何为maven坐标)
2014-05-27 00:22:41Maven坐标和依赖(何为maven坐标) ---------- maven的世界中拥有数量非常巨大的构件,也就是平时用的一些jar,war等文件。在maven为这些构件引入坐标概念之前,我们无法使用任何一种方式来唯一标识所有这些构件... -
Maven坐标组成
2019-06-27 19:41:061:Maven坐标的定义: Maven坐标就是使用坐标来对maven文件进行唯一识别的一套规则,坐标是为了方便别的地方引用到项目。Maven的坐标元素包括groupId、artifactId、version、packaging、classfier。只要我们提供正确... -
maven 坐标详解
2016-12-21 12:46:371.为什么要定义Maven坐标 在我们开发Maven项目的时候,需要为其定义适当的坐标,这是Maven强制要求的。在这个基础上,其他Maven项目才能应用该项目生成的构件。 2.Maven坐标详解 Maven坐标为各种构件引入...
-
应用于亚波长角向偏振金属光栅设计的快速收敛粒子群算法优化
-
Selenium3分布式与虚拟化
-
if语句实例(上网吧!)
-
python爬虫豆瓣读书top250+数据清洗+数据库+Java后端开发+Echarts数据可视化(五)
-
基于AutoCAD平台的建筑给排水系统设计与开发
-
多线程与线程池技术详解(图书配套)
-
手势解锁-canvas-javascript实战
-
量化高频交易系统tick数据采集
-
EmguCV OpenCVSharp视频教程 C# OpenCV
-
Qt项目实战之基于Redis的网络聊天室
-
树状数组的基本操作
-
Wireshark.zip
-
腾讯云轻量应用服务器免费升配活动详解,文字版。
-
2021-01-26
-
常用的linux命令(小白入门)
-
Leetcode 7.整数反转
-
FX3U主站S7200smart从站MODBUS通讯.xlsx
-
算法导论(基础知识)——编程大牛的必经之路
-
【数据分析-随到随学】Hive详解
-
微信公众号2021之网页授权一学就会java版