Maven中的坐标和仓库

构件

构件通过坐标作为其唯一标识,任何一个构件都必须明确定义自己的坐标。

坐标

这里写图片描述

这里写图片描述

这里写图片描述

  • groupId:定义当前maven项目隶属的实际项目。通常是域名反向

  • artifactId:该元素定义实际项目中的一个maven项目(模块),推荐做法是使用实际的项目名作为artifactId的前缀

  • version:定义maven项目当前所处在的版本

  • packaging:该元素定义maven项目的打包方式,打包方式通常与所生成构件的文件扩展名对应。

  • classifier:该元素用来帮助定义构建输出的一些附属构件。

仓库

什么是仓库?
这里写图片描述

本地仓库和远程仓库
下面就是一个远程的中央仓库,
这里写图片描述

所有的项目中pom.xml都继承自maven-model-builder-3.5.0.jar中的pom-4.0.0.xml,他们都拥有这个远程的全球的中央仓库

我们来访问这个远程仓库
这里写图片描述
几乎所有的开源项目都可以在上面找到

镜像仓库

由于国外访问速度太慢,国内也有提供一样的功能的仓库,相对速度会更快,如何修改镜像仓库的位置?
这里写图片描述
找到conf目录下的setting.xml文件,打开
这里写图片描述

推荐使用阿里云的,速度较快
这里写图片描述

本地仓库

如何更改本地仓库的位置,默认本地仓库是在:C:\Users\用户名\.m2\repository中。
这里写图片描述
现在更改本地仓库位置,依然修改setting.xml文件
这里写图片描述

这里写图片描述

测试一下,看看本地仓库位置是否修改成功
这里写图片描述

这里写图片描述

这里写图片描述

### Maven坐标详解 Maven坐标用于唯一标识一个项目或依赖项,其核心由多个字段组成,这些字段共同构成了项目的全局唯一标识符。以下是关于Maven坐标的详细说明: #### 1. **基本构成** Maven坐标主要由以下几个部分组成[^2]: - **`groupId`**: 表示当前Maven项目的组织ID,通常采用反向域名的形式来区分不同的组织或公司。例如,在 `<groupId>org.apache.commons</groupId>` 中,“org.apache.commons”表示Apache Commons组织下的项目。 - **`artifactId`**: 表示具体的项目或者模块名称。它是`groupId`下唯一的子项目标识。例如,`spring-core` 是 Spring Framework 的核心模块。 - **`version`**: 定义了该构件的具体版本号。这有助于开发者明确指定所需的特定版本,从而避免不同版本之间的冲突。例如,`4.2.7.RELEASE` 明确指定了Spring框架的一个稳定发布版[^3]。 - **`packaging` (可选)**: 描述项目的打包方式,默认值为 `jar`。如果需要构建其他类型的文件(如 `war`, `pom`),则可以在此处显式声明。例如: ```xml <packaging>war</packing> ``` - **`classifier` (可选)**: 提供额外的信息以进一步细分构件。例如,某些JAR包可能包含源码 (`sources`) 或者JavaDoc文档 (`javadoc`),此时可以通过 classifier 来标记它们。例如: ```xml <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <classifier>tests</classifier> </dependency> ``` --- #### 2. **定义与使用** 在实际开发过程中,Maven坐标被广泛应用于以下场景: ##### a) 添加外部依赖 当引入第三方库时,需将其对应的Maven坐标写入项目的 `pom.xml` 文件中。例如,要添加 Android 支持库的依赖,可以这样配置[^4]: ```xml <dependency> <groupId>com.android.support</groupId> <artifactId>appcompat-v7</artifactId> <version>28.0.0</version> </dependency> ``` ##### b) 发布自己的组件至远程仓库 为了使其他团队成员能够方便地引用自己开发的组件,必须先为其定义完整的Maven坐标并上传到公共或私有的Maven仓库。例如,假设有一个名为 `my-library` 的工具类库,则可以在 `pom.xml` 中设置如下参数后再执行部署命令: ```xml <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.0.0</modelVersion> <groupId>com.example.mycompany</groupId> <artifactId>my-library</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> </project> ``` 随后运行以下命令完成发布操作: ```bash mvn deploy ``` ##### c) 解决依赖冲突 由于复杂的项目结构可能导致重复加载相同功能的不同版本,因此合理利用 `exclusions` 节点排除不必要的间接依赖成为必要手段之一。例如: ```xml <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> </exclusions> </dependency> ``` --- ### 总结 Maven坐标作为Maven生态系统的重要组成部分,不仅简化了依赖管理分发流程,还极大地提高了软件工程协作效率。通过精确控制各个维度的数据组合形式,使得跨平台共享资源变得更加便捷高效[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值