Maven学习笔记之坐标

作为依赖管理工具,Maven定义了坐标用于唯一标识构件在仓库中的位置,构成了依赖管理的底层基础。
Maven构件的坐标包括:
  • groupId定义隶属实际项目的名称,一般是隶属组织或公司域名的倒序加上实际项目名称;
  • artifactId定义模块的名称,一般是实际项目名称加上子模块名称。一个模块可能包含多个子模块,便于模块化管理;
  • version定义模块的版本,主要包括稳定版本和SNAPSHOT版本;
  • packaging定义模块的打包方式,常用的打包方式包括:
    - jar是普通模块的打包方式,即不在POM文件中显式指定packaging元素时默认的打包方式,生成构件的后缀名为.jar;
    - maven-plugin是Maven插件项目的打包方式,生成构件的后缀名为.jar;
    - pom是父模块的打包方式,负责组织子模块,只生成目录结构,不生成构件;
    - war是Web项目的打包方式,构建成功后可以直接放入Tomcat等Web容器运行,生成构件的后缀名为.war;
    可见项目的打包方式和生成构件的后缀名虽然有一定的联系,但不是一一对应关系。
  • classifier定义项目的附属构件,包括同时发布的JavaDoc、源代码等,不能在POM文件中显式指定,只能由指定的Maven插件帮助生成,如Maven JavaDoc Plugin、Maven Sources Plugin等。
其中groupId、artifactId和version必须指定,最终构件的文件名形如artifactId-version[-classifier].packaging。

实例
获取Spring Security 3.2.5版本,打开对应的POM文件可以看到如下定义:
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.2.5.RELEASE</version>
根据坐标的知识可以得出:
  • 组织的域名是springframework.org,实际项目名称是security;
  • 模块的名称是spring-security-web;
  • 模块的版本是3.2.5.RELEASE,是稳定的发布版本;
  • 模块使用默认的打包方式,不包含子模块,生成构件的后缀名为.jar;
  • 最终构件的文件名为spring-security-web-3.2.5.RELEASE.jar。
结合文件系统的目录结构,构件在仓库中位于org/springframework/security/spring-security-web/3.2.5.RELEASE/spring-security-web-3.2.5.RELEASE.jar。

问答

1. 为什么要在groupId末尾加上实际项目名称?假设一个公司的多个Maven项目都包含子模块:

A项目
<groupId>org.company</groupId>
<artifactId>projectA</artifactId>
A项目子模块1
<groupId>org.company</groupId>
<artifactId>projectA-module1</artifactId>
A项目子模块2
<groupId>org.company</groupId>
<artifactId>projectA-module2</artifactId>
B项目
<groupId>org.company</groupId>
<artifactId>projectB</artifactId>
B项目子模块
<groupId>org.company</groupId>
<artifactId>projectB-module</artifactId>
如果不在groupId末尾加上实际项目名称,那么两个项目的构件在仓库中都位于org/company目录下,子模块将难以区分。

2. 为什么要在artifactId前面加上实际项目名称?假设在Maven项目声明了多个依赖:

A项目
<groupId>org.company.projectA</groupId>
<artifactId>core</artifactId>
<version>1.0.0</version>
B项目
<groupId>org.company.projectB</groupId>
<artifactId>core</artifactId>
<version>1.0.0</version>
如果不在artifactId前面加上实际项目名称,那么两个构件在Maven Dependency都显示为core-1.0.0.jar,构件将难以区分。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值