Maven 中的坐标和仓库

坐标、构建的概念
	坐标:Maven世界中唯一标识一个构件的标识,一般由groupId/artifactId/version三部分组成,建议artifactId和项目名要一	 致,这样更清晰,也更容易查找。
	仓库:放置各种依赖的地方
	C:\apache-maven-3.3.9\lib\maven-model-builder-3.3.9\org\apache\maven\model\pom-4.0.0.xml——Maven为我们提    	供的超级pom我们所有的pom都会记录这个pom这里记录的有全球的中央仓库 ,中央仓库中放置了几乎所有开源项目的资源——jar包
	镜像仓库:Maven的中央服务器都是放置在国外的,有时我们不能访问外网,国内也有他的镜像仓库,这样就能更好的访问了
	C:\apache-maven-3.3.9\conf\settings.xml这个文件中就配置着镜像的信息,可以配置国内的镜像文件的路径,这样就能更快	 更好的访问了
	<mirror>
    	      <id>maven.net.cn</id>
	      <mirrorOf>central</mirrorOf>
	      <name>central mirror in china</name>
   	      <url>http://maven.net.cn/content/groups/public</url>
   	 </mirror>

	一旦配置了镜像仓库,那么先前的所有配置都会转到镜像仓库中,

本地仓库:maven从远程中央库下载的资源默认放在了C:\Users\Administrator\.m2\repository这个目录,为了安全性,一般不会选择放 在c盘下可以修改本地仓库的目录,指定到更安全的目录下。
 	找到<setting></setting>标签,加入例如:<localRepository>D:/Maven/repository</localRepository>,配置新仓库
 	另外,setting.xml这个文件也需要存到新仓库目录下,这是为了更新版本的时候不用重新修改这个配置文件
	配置好之后,可以再次运行mvn命令会再次下载相关jar包

   

        
        
                
    
### 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、付费专栏及课程。

余额充值