目录
- 一、前言
- 二、配置Apache Maven
- 1、在Maven的settings.xml中添加一个镜像配置,并覆盖中央仓库的默认配置
- 二、创建Maven项目,配置pom文件拉取Nexus中的jar包
- 1、确定配置的Maven的settings.xml是否是上一步修改的settings.xml文件,以及repository的路径
- 2、在pom文件中添加要使用的jar包依赖
- ①、在Nexus的托管仓库中查看需要拉取jar包的坐标,注意组资源库中能够查看所有托管资源库和代理资源库中的jar包
- 3、在pom.xml文件中引入jar包坐标,并且在添加一个本地repository中没有下载过jar包
- ①、jar包坐标
- ②、添加完依赖后的pom.xml结构
- 4、重载Maven项目之后发现,pom.xml文件中对应的依赖不在冒红,并且在Dependencies已经有对应依赖
- 三、引入依赖时,加载Maven显示无法解析或找不到该jar包
- 1、当我们把需要引入的jar包下载下来时,加载maven项目后,显示Cannot resolve XXXXXX,其原因是:我们上传jar包时的路径是snapshot快照库,但maven无法下载snapshot快照库
- 2、maven的依赖管理方式
- 3、Maven开启Snapshot版本拉取jar包
- ①、在pom.xml中配置项目级的
- ②、在settings.xml中配置全局级的
一、前言
已经在nexus中创建了Maven私服,如果没有创建,可以借鉴此博客:【Nexus】Nexus创建Maven私服
确保托管资源库中已经有需要拉取的jar包,如果没有,可以借鉴此博客进行上传jar包:【Nexus】上传jar包至Nexus的两种方式
二、配置Apache Maven
配置Apache Maven的目的是为了使用仓库管理,而不是默认使用中央仓库
1、在Maven的settings.xml中添加一个镜像配置,并覆盖中央仓库的默认配置
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库地址 -->
<localRepository>D:\workSoftware\Java\maven\repository</localRepository>
<!--nexus服务器-->
<servers>
<!--id为对应资源库id-->
<server>
<id>tfjy-snapshot-hosted</id>
<username>admin</username>
<password>nexusb-test</password>
</server>
<server>
<id>tfjy-hosted</id>
<username>admin</username>
<password>nexusb-test</password>
</server>
<server>
<id>nexus</id>
<username>admin</username>
<password>nexusb-test</password>
</server>
</servers>
<!--组资源库的url地址 id和name自定义,mirrorOf的值设置为central-->
<mirrors>
<mirror>
<id>nexus</id>
<name>nexus repository</name>
<url>http://IP或域名:8089/repository/tfjy-group/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
二、创建Maven项目,配置pom文件拉取Nexus中的jar包
1、确定配置的Maven的settings.xml是否是上一步修改的settings.xml文件,以及repository的路径
2、在pom文件中添加要使用的jar包依赖
①、在Nexus的托管仓库中查看需要拉取jar包的坐标,注意组资源库中能够查看所有托管资源库和代理资源库中的jar包
3、在pom.xml文件中引入jar包坐标,并且在添加一个本地repository中没有下载过jar包
①、jar包坐标
<dependency>
<groupId>com.tfjybj</groupId>
<artifactId>metaverse-demo</artifactId>
<version>1.0-20230322.074428-1</version>
<type>pom</type>
</dependency>
②、添加完依赖后的pom.xml结构
<?xml version="1.0" encoding="UTF-8"?>
<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.tfjybj</groupId>
<artifactId>metaverse-common</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.tfjybj</groupId>
<artifactId>metaverse-demo</artifactId>
<version>1.0-20230322.074428-1</version>
<type>pom</type>
</dependency>
</dependencies>
</project>
4、重载Maven项目之后发现,pom.xml文件中对应的依赖不在冒红,并且在Dependencies已经有对应依赖
三、引入依赖时,加载Maven显示无法解析或找不到该jar包
1、当我们把需要引入的jar包下载下来时,加载maven项目后,显示Cannot resolve XXXXXX,其原因是:我们上传jar包时的路径是snapshot快照库,但maven无法下载snapshot快照库
2、maven的依赖管理方式
maven的依赖管理方式中将依赖分为两种版本,一种是Release正式版本,一种时Snapshot快照版本。一般版本号后面带有RELEASE或者什么都没有的就是正式版本,而版本号后面带有SNAPSHOT的则是快照版本
Maven对这两版本的依赖管理方式是不同的:
1、如果是正式版本的依赖,Maven在构建工程的时候会减产本地仓库有没有这个依赖,没有的话就去远程仓库拉取。因为是优先从本地仓库找,所以如果对该依赖做了迭代更新,需要重新发布一个正式版本,所以正式版本的依赖一般是一个稳定的版本。然而组间开发引用的其他组的依赖一直在频繁迭代更新,这就不能一直发正式版本了,需要用到Snapshot快照版本。
2、如果依赖是一个快照版本,Maven在构建工程的时候会优先检查远程仓库中的该快照版本是否有更新,如果有更新的话就下载到本地,这样就不用一直发版本了。
3、Maven默认是不开启Snapshot版本拉取的,需要配置开启
3、Maven开启Snapshot版本拉取jar包
①、在pom.xml中配置项目级的
<repositories>
<repository>
<id>nexus</id>
<url>http://IP或域名:8089/repository/tfjy-group/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
②、在settings.xml中配置全局级的
<profiles>
<profile>
<id>roncoo-profile</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://IP或域名:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>roncoo-profile</activeProfile>
</activeProfiles>