1. Maven仓库
1.1. 在Maven的术语中, 仓库是一个位置(place)。
1.2. Maven仓库是项目中依赖的第三方库, 这个库所在的位置叫做仓库。
1.3. 在Maven中, 任何一个依赖、插件或者项目构建的输出, 都可以称之为构件。
1.4. Maven仓库能帮助我们管理构件(主要是JAR), 它就是放置所有JAR文件(WAR, ZIP, POM等等)的地方。
1.5. Maven仓库有三种类型:
- 本地(local)
- 中央(central)
- 远程(remote)
2. 本地仓库
2.1. Maven的本地仓库, 在安装Maven后并不会创建, 它是在第一次执行maven命令的时候才被创建。
2.2. 运行Maven的时候, Maven所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有, 它会首先尝试从远程仓库下载构件至本地仓库, 然后再使用本地仓库的构件。
2.3. 默认情况下, 不管Linux还是Windows, 每个用户在自己的用户目录下都有一个路径名为.m2/repository/的仓库目录。
2.4. Maven本地仓库默认被创建在%USER_HOME%目录下。要修改默认位置, 在%MAVEN_HOME%/conf目录中的Maven的settings.xml文件中定义另一个路径。
3. 中央仓库
3.1. Maven中央仓库是由Maven社区提供的仓库, 其中包含了大量常用的库。
3.2. 中央仓库包含了绝大多数流行的开源Java构件, 以及源码、作者信息、SCM、信息、许可证信息等。一般来说, 简单的Java项目依赖的构件都可以在这里下载到。
3.3. 中央仓库的关键概念:
- 这个仓库由Maven社区管理。
- 不需要配置。
- 需要通过网络才能访问。
3.4. Maven内置了一个中央仓库地址, 访问的url可以从%MAVEN_HOME%\lib\maven-model-builder-3.8.4.jar\org\apache\maven\model\pom-4.0.0.xml找到
3.5. 访问中央仓库https://repo.maven.apache.org/maven2
4. 远程仓库(可以在企业内部局域网中使用)
4.1. 如果Maven在中央仓库中也找不到依赖的文件, 它会停止构建过程并输出错误信息到控制台。为避免这种情况, Maven提供了远程仓库的概念, 它是开发人员自己定制仓库, 包含了所需要的代码库或者其他工程中用到的jar文件。
4.2. 举例说明, 使用下面的pom.xml, Maven将从远程仓库中下载该pom.xml中声明的所依赖的(在中央仓库中获取不到的)文件。
5. 执行Maven构建命令时, Maven开始按照以下顺序查找依赖的库:
5.1. 步骤1: 在本地仓库中搜索, 如果找不到, 执行步骤2, 如果找到了则执行其他操作。
5.2. 步骤2: 在中央仓库中搜索, 如果找不到, 并且有一个或多个远程仓库已经设置, 则执行步骤4, 如果找到了则下载到本地仓库中以备将来引用。
5.3. 步骤3: 如果远程仓库没有被设置, Maven将简单的停滞处理并抛出错误(无法找到依赖的文件)。
5.4. 步骤4: 在一个或多个远程仓库中搜索依赖的文件, 如果找到则下载到本地仓库以备将来引用, 否则Maven将停止处理并抛出错误(无法找到依赖的文件)。
6. Maven引入外部依赖(不在仓库中的jar包)
6.1. 新建一个名为MavenOutDependency的Java项目
6.2. 在MavenOutDependency的Java项目中创建一个名为MvnOutDpy.java的接口
6.3. 右键MavenOutDependency项目——>Export...
6.4. Java——>JAR file
6.5. 选择jar导出的位置——>Finish
6.6. 在MavenWeb工程下, 新建一个lib文件夹, 拷贝MavenOutDependency1.0.0.jar到lib下
6.7. 在pom.xml文件中添加依赖
6.8. 创建CommonDB.java实现MvnOutDpy.java接口