Maven核心概念(1)--坐标

2023-05-16

注:转载时请注明原作者(lreis2010)及出处(http://blog.csdn.net/lreis2010/)!

        作者初次接触Maven是希望有一种方式能够自动化地管理项目中使用的Jar包。随着对于Maven的学习,可以了解到这是Maven的一大功能-管理项目依赖(Dependency)。

        为了管理项目依赖(Dependency),即各种Jar包,Maven必须能够精确地定位每一个Jar包,为此,Maven引入了坐标的概念。

        坐标,用于唯一标识一个物体的一组数据。

        下面是Maven对于Dependency的定义:(由于页面大小,作者删除了部分信息。有意者可以查看源文件(Dependency.java))

package org.apache.maven.model;
public class Dependency
    implements java.io.Serializable, java.lang.Cloneable, org.apache.maven.model.InputLocationTracker
{
      //--------------------------/
     //- Class/Member Variables -/
    //--------------------------/
    private String groupId;
   
    private String artifactId;

    private String version;
   
    private String type = "jar";
   
    private String classifier;
   
    private String scope;

    private String systemPath;

    private java.util.List<Exclusion> exclusions;

    private String optional;

    private java.util.Map<Object, InputLocation> locations;
	  //-----------/
     //- Methods -/
    //-----------/
}

可见,Maven对于Dependency的坐标定义为(groupId,artifactId,version,type,classifier,scope)

1)groupId(The project group that produced the dependency)

groupId定义的是当前该Dependency所隶属的项目。例如Maven项目本身分为多个子项目:Settings、Settings Builder、Model Builder等,子项目Artifact的groupId定义为org.apache.maven。

2)artifactId(The unique id for an artifact produced by the project group)

artifactId定义的是该Artifact(子项目,暂时这么理解吧。好像Maven对它有更多的定义,以后有机会再修改吧)所标识的唯一标识。例如上文中的Artifact的artifactId定义为maven-artifact。首先,该artifactId标注了该子项目所隶属的项目maven,其次又唯一标示了该子项目artifact。

3)version(The version of the dependency)

version定义的是该依赖的版本号,Maven有一定的规范。等作者解析到了再分析。

4)type(The type of dependency)

type定义的是该依赖的打包方式,默认值为jar。该值涉及到ArtifactHandler,即Artifact的处理方式,稍后再议。

5)classifier( The classifier of the dependency)

classifier用来标识构建过程中的一些附属构件。该值涉及到ArtifactHandler,即Artifact的处理方式,稍后再议。

6)scope(The scope of the dependency)

classifier定义的是该依赖的使用范围。在Artifact类中有对于各种Scope的定义,包括Artifact.SCOPE_COMPILE、Artifact.SCOPE_COMPILE_PLUS_RUNTIME、Artifact.SCOPE_TEST、Artifact.SCOPE_RUNTIME、Artifact.SCOPE_RUNTIME_PLUS_SYSTEM、Artifact.SCOPE_PROVIDED、Artifact.SCOPE_SYSTEM、Artifact.SCOPE_IMPORT。

其中(groupId,artifactId,version)是必须的元素,type是可选的,默认值为jar。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven核心概念(1)--坐标 的相关文章

随机推荐

  • mysql修改root密码

    打开mysql命令终端 MySQL 8 0 Command Line Client xff0c 然后输入密码进入 紧接着输入如下命令 xff0c 可将密码更改为 rootcgcl alter user root 64 localhost i
  • Linux下vncviewer和vncserver的安装

    1 安装vncserver xff08 1 xff09 需要以root用户进行vncserver的安装 xff0c 命令行为 xff1a yum install tigervnc server xff08 2 xff09 安装vncview
  • 怎样把shell结果赋值给变量 | shell 中获取命令语句结果的方式

    怎样把shell结果赋值给变量 xff0c shell 中获取命令语句结果的方式 xff0c 通常采用以下两种方式 xff1a 1 执行符号方式 96 96 如 xff1a a 61 96 echo abc 96 echo a abc 2
  • CSS的替换元素

    CSS的 替换元素 xff1a 通过修改某个元素的属性值呈现的内容就可以被替换的元素 替换元素的特性 xff1a 内容不受页面上的CSS的影响 也就是样式表现在CSS作用域之外大部分有自己默认的尺寸 xff0c lt img gt 标签没有
  • Jack 服务编译问题 Android 7.0

    jack 服务常见错误解决方法 当你编译Android时 xff0c 你不需要修改任何内容 Jack是Andriod M的默认编译工具 只需使用标准的makefile命令执行即可 当第一次执行jack时 xff0c 它会在你的机器上启动一个
  • Tomcat+Nginx+HTTPS

    root 64 lb01 conf d cat etc nginx conf d proxy zrlog oldboy com conf upstream zrlog server 172 16 1 7 8080 server 172 16
  • PHP多进程异步处理复杂接口类似微服务(企业真实案例)

    需求 用户下单 推荐合师傅给用户 类似滴滴派单 场景 在线服务平台有各类技术师傅入驻 顾客在下单后需要根据在线师傅及顾客位置计算推荐总分排行后返回推荐的师傅给用户 问题 1 php fpm 框架 无法多线程工作 2 平台师傅有多个评分属性
  • Swoole数据库连接池分析及实现

    使用PHP swoole 由于其内存常驻及协程特性 一般是需要使用数据库链接池来减少链接创建的开支的 一个连接池的实现难点在哪 下面分析 1 如何判断是否该获取新的链接 A 默认规则一个协程对应一个数据库连接 同一个协程里应该返回同一个链接
  • Api接口数据安全及数据加密方式主要流程实现

    简述接口数据安全的主要实现方式 一 数据校验 常用算法 MD5 SHA1 流程 1 前端生成数据后按照约定方式生成一个sign 校验字段 一般通过MD5或者SHA1 方式 一并提交给后端 2 后端获得参数后通过同样的方式生成sign 然后跟
  • 简述PHP执行流程

    目的 xff1a 本文主要介绍PHP执行流程 目的是梳理php代码是如何最终转换成为机器二进制指令而被执行的 参考文章 xff1a https blog csdn net diavid article details 81035188 PH
  • Java为啥比PHP快?

    一直都说php比java要慢 今天从理论跟实际测试看看php是否真的慢 慢在哪里 一 运行模式对比 java 一般用java 语言开发的网站项目都是以命令行模式运行 部分可能以可执行文件 xff08 exe xff09 的形式运行 php
  • PHP微服务 hyperf+nacos使用

    PHP微服务 hyperf 43 nacos使用 这里简单说下微服务 及架构方面东西 1 微服务对php 43 fpm 模式意义不是很大 原因就是php 43 fpm 天生支持模块拆分 热更新 如果只是性能上的考虑 那php 43 fpm
  • PHP项目临时拓容Nginx负载均衡实操记录

    项目域名 test baidu com 服务器A 127 0 0 1 内网ip 原有服务器 服务器B 172 30 228 254 内网ip 需求 项目本在服务器A中正常运行 现在临时搞活动 需要拓容一台 多台服务器 在最小成本跟改动下完成
  • layui templet中html标签获取js全局变量方法

    开发中涉及layui中 xff0c 在使用到table的模板方法时templet xff0c 会遇到其内部除了使用table field xff08 此处通过d 来获取 xff0c 就不啰嗦了 xff09 然后如果想获取某个外部js中的全局
  • PHP分布式部署代码同步Git实现

    PHP 分布式部署后 代码自动同步实现 项目架构如下 需要更新代码时我们只需要把代码传到主服务器后通过定时任务主服务器自动push 代码到Git服务端 之后其他从服务器则自动从Git云端拉取最新的代码即可 需要用到 expect 软件 安装
  • nginx 负载均衡502问题

    项目架构 nginx 43 php fpm 负载均衡 负载均衡关键配置如下 引入负载均衡配置 include proxy conf 负载均衡 upstream test balance server 172 28 196 xxx 80 we
  • 用Android 动画 演示冒泡排序

    之前面试遇到的一道机试题 当时时间不够没有调出来 有时间把它整了一下 代码 public class MainActivity extends ActionBarActivity implements OnClickListener pri
  • 教你怎么阅读外文文献

    转载自 http www douban com group topic 14551517 NO 1 中科院大博士是如何进行文献检索和阅读的 xff08 好习惯受益终生 xff09 一 如何进行文献检索 我是学自然科学的 xff0c 平时确实
  • webpack打包时提示Invalid configuration object错误

    初学者如果是通过网上教程来学习webpack xff0c 第一次用webpack打包时通常会遇到下面这样的问题 xff1a 实际上出错信息已经说明了问题原因 xff1a Invalid configuration object Webpac
  • Maven核心概念(1)--坐标

    注 xff1a 转载时请注明原作者 lreis2010 及出处 http blog csdn net lreis2010 xff01 作者初次接触Maven是希望有一种方式能够自动化地管理项目中使用的Jar包 随着对于Maven的学习 xf