通过配置项目的POM文件,Maven就可以帮助我们构建相应的jar包依赖,编译等等。
这节描述一下项目是在哪个地方下载构件的
PS:构建:在Maven世界中,任何一个依赖、插件、或者项目构建的输出都叫做一个构件。
一、Maven仓库定义
Maven可以在某个位置统一存储多有Maven项目共享的构件,这个统一的位置就是仓库。
类似于一个数据库(仓库),只有你有某条记录的ID(构件的坐标:groupId:artifactId:version),你就可以取到这条记录的所有数据(构件)
二、仓库的分类
1.本地仓库
含义:放在本机上的仓库。
我们使用Maven建立的项目中没有lib文件夹存放项目,这样也就避免的N个项目需要复制N份lib包的依赖。Maven通过本地仓库,将每一个构件只下载一份保存在本地仓库,N个项目中如果需要使用同样一个构件,那么只要构件的坐标唯一,在本地仓库中就有唯一一份。
一般情况下本地仓库都是放在用户目录下,例如:如果主机名为:Administrator。那么本地仓库的目录为:C:\Users\Administrator\.m2\repository。当然你也可以自己配置这个目录。可以打开setting.xml文件。
在setting文件中<localRepository>元素就是用来配置本地仓库用的。你可以改为任意目录
如果配置好了,如果你的系统没有这个$USER_PATH\.m2\repository这个目录,你可以先新建一个,以后所有构建都会下载到这个目录下。
这个目录下的文件路径也是有规律的:
<groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.1.0.Final</version>
我们看一下在这个pom文件增加一个对hibernate-core的依赖。对应到本地仓库中文件存放的目录:
2.远程仓库
构建不在本地的仓库,而是保存在网络上。
Maven查找构件时会先查看本地仓库有没有所需要的构件,如果有直接引用。没有就会去远程仓库查找。这就好像家里的书房和书店类似。我需要某本书,首先会在自家的书房里面找,如果没有找到,那就去书店里面找。如果最后书店里面也没有找到,Maven就会报错。
2.1中央仓库
中央仓库是Maven默认的一个仓库。我们可以打开$MAVEN_HOME/lib/maven-model-builder-3.0.4.jar
里面有个超级POM,所有项目里面的POM都是继承这个超级POM,有点像多有的类都是继承自Object类一样。在这个POM里面有这样一段:
这就定义了一个中央仓库:central。在这个中央仓库中包含了世界上绝大多数流行的Java构件。这就是为什么我们直接安装好Maven,然后就可以使用。因为项目需要的依赖直接可以从这个中央仓库下载。这个里面的元素解释已经在前面关于POM的描述中都说过了。
<id>:为中央仓库设置名称,如果子POM覆盖这个ID,那么这个中央仓库将失效
<name>:为中央仓库起个名字
<url>:通过url来定位在哪里下载构建
<layout>:默认使用Maven2的默认布局
<snapshots>--><enabled>:是否下载快照版本的构建,这是是不下载快照版本
2.2私服
PS:每次一想到私服就想起初中那会玩《传奇》。一个区里面只有一把屠龙刀,而且要升到65级才能拿,如果看到那个大神拿着屠龙刀,简直就是碉堡了但是这种正服不是我们屌丝玩的起的,所以当时选择玩私服,还记得当时玩的英山传奇的私服,一出来就是65级,裁决,麻痹戒指,超爽!为什么会喜欢玩私服呢?因为私服确实有优势。
正如我们Maven中的私服一样。
私服的定义:
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服用来代理远程仓库,供局域网内的Maven用户使用,当Maven需要下载构件的时候,它从私服请求下载。如果私服上没有,就从远程仓库下载,缓存在私服上之后,在为Maven的下载请求提供服务,此外一些无法从外部下载的构件也能从本地上传到私服上供大家使用
私服的优势:
节约外网带宽:有了私服,Maven下载就是在局域网中传递数据,减少带宽的消耗
部署第三方构件:有些构建因为一些原因你在外部仓库没有办法获得,这时可以将构件上传到私服上供Maven用户使用
提高稳定性,增强控制:由于是私服,你可以不受外部仓库影响
降低中央仓库的负荷:N个人去中央仓库下载那么请求N次,如果在N个人前面加一个私服,那么N次请求变成了一次。因为私服请求一次,后面N个人就都去请求私服了
远程仓库的配置:
在前面我们已经看到怎么配置一个中央仓库,现在在配置一个jboss的远程仓库
<repositories> <repository> <id>JBoss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </repository> </repositories>
在repositories中可以定义多个repository。每一个repository都声明了一个远程仓库。
<releases> <enabled>true</enabled> </releases>
表示Maven开启jboss仓库的发行版下载支持,对快照版不支持,layout默认布局采用Maven2及Maven3的默认布局。
<snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </snapshots>
updatePolicy表示更新频率,daily表示每天更新;never表示从不更新;always表示每次构建检查更新;interval:XXX表示每隔XXX分钟检查更新一次
checksumPolicy用来配置Maven检查校验和文件的策略。默认为war表示Maven会在执行构建时输出警告信息;fail表示遇到校验和错误是就停止构建;ignore表示忽略校验和错误
Maven请求构件的流程:
相关推荐
7. **源代码管理与团队协作**: 由于所有的构建配置都在`pom.xml`中,团队成员只需克隆项目仓库,配置好Maven,就可以直接进行开发和构建,提高了协作效率。 8. **持续集成**: Maven可以轻松地与Jenkins、GitLab CI/...
1. **检索Maven仓库**: 使用pulp_maven-client,开发者可以查询Maven仓库中的依赖项,获取jar包信息,包括版本、依赖关系等。 2. **上传和下载**: 库提供了上传Maven工件到Pulp服务器以及从Pulp服务器下载工件的...
通常,这会指向FastDFS官方的Maven仓库或开发者自定义的本地jar包。例如: ```xml <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client-java <version>1.27.4 ``` 确保Maven能正确解析并下载这...
1. Maven的基础知识:介绍Maven的哲学、核心概念(如POM、生命周期、插件)、标准目录结构等。 2. 配置Eclipse与Maven:讲解如何安装Maven,如何在Eclipse中配置Maven路径,以及如何创建Maven工程。 3. Maven的依赖...
### Maven的核心概念 1. **项目对象模型 (POM)**: Maven的配置信息存储在POM.xml文件中,包含了项目的基本信息、构建指令、依赖库、插件和构建目标等。POM是Maven处理项目的基础。 2. **依赖管理**: Maven自动解决...
Maven 的核心理念是通过标准化的构建生命周期和插件机制,使得开发过程更加简单、高效。 在“apache-maven-3.6.2”这个压缩包中,我们获得了Maven 3.6.2的完整版本。这个版本是Maven的一个稳定版本,包含了执行构建...
POM包含了项目的基本信息、构建指令、依赖关系和插件配置等,是Maven工作的核心。 2. **Maven仓库** Maven利用中央仓库来管理各种项目的依赖,包括JAR包、源码、文档等。开发者只需在POM中声明依赖,Maven会自动...
1. **项目对象模型(POM)**:Maven 的核心是POM,这是一个XML文件,包含了项目的基本信息、构建指令、依赖关系以及插件配置等。POM使得项目的构建过程标准化,减少了配置工作。 2. **依赖管理**:Maven通过中央...
6. **项目构建流程**: 使用Maven时,开发者可以通过命令行执行`mvn clean compile`来清理旧的编译产物并重新编译源代码,`mvn test`执行单元测试,`mvn package`打包项目,`mvn install`将项目安装到本地仓库,便于...
1. **Maven配置**:Maven的配置主要通过`settings.xml`文件进行,它可以定义本地仓库路径、远程仓库和镜像,以及用户特定的配置信息。 2. **项目对象模型(POM)**:POM是Maven的核心,包含了项目的基本信息,如项目...
默认的本地仓库位于用户主目录下,远程仓库可以是公司的内部仓库或公共的Maven Central仓库。`settings.xml`文件用于配置仓库信息和代理设置。 ### Maven的聚合与继承 - **聚合(Aggregation)**:一个POM可以包含...
Maven 使用中央仓库来存储各种库和组件,当项目需要某个依赖时,Maven会自动从仓库下载并管理这些依赖,极大地简化了项目的构建过程。 Maven 的构建生命周期包括三个阶段:clean、default 和 site。clean 阶段主要...
2. **远程仓库**:包括中央仓库(默认)和其他自定义仓库,Maven首先从本地仓库查找依赖,若找不到则从远程仓库下载。 3. **镜像**:为了提高下载速度,可以配置Maven使用国内的镜像源,如阿里云或网易的Maven镜像...
总之,Apache Maven 3.6.3作为Java开发中的核心工具,简化了项目管理,提高了团队协作效率,是现代Java开发不可或缺的一部分。通过熟练掌握Maven的使用,开发者可以更专注于编写高质量的代码,而不是繁琐的构建过程...
通过Maven仓库系统,它可以自动下载所需的依赖库,避免了手动管理jar文件的麻烦。此外,Maven提供了标准化的构建生命周期和插件机制,使得构建过程如编译、测试、打包、部署等可以轻松完成。 总结来说,"jdk_maven....
Maven的核心功能包括: 1. **项目构建**:Maven通过使用预定义的生命周期和构建阶段,如clean、compile、test、package、install和deploy,来简化构建过程。开发者只需在POM.xml文件中配置相关信息,Maven就能自动...
### Maven仓库详解 #### 1. Maven概述 Maven是一个非常强大的Java项目管理和理解工具,其核心在于`pom.xml`文件。通过这个文件,Maven能够自动化地管理项目的构建流程,包括依赖管理、编译、测试、打包、部署等。 ...
- **仓库**: Maven会从中央仓库以及其他配置的远程仓库获取依赖。 **2.6 获得Maven帮助** 使用`mvn help:all`命令可以获取Maven所有可用插件的帮助信息。 **2.7 描述Maven插件** 使用`mvn help:describe -Dgoal=...
Maven的核心概念是基于项目对象模型(Project Object Model,POM)。POM是一个XML文件,包含了项目的配置信息,如项目依赖、构建目标、插件等。通过POM,Maven可以自动下载项目所需的库文件,构建项目,甚至生成文档...
在本压缩包中,包含了《maven实战.pdf》这一核心资料,这将是你学习和掌握Maven的宝贵资源。 Maven的核心概念主要包括项目对象模型(Project Object Model,POM)、依赖管理、插件以及生命周期。POM是Maven的核心,...