Maven问题汇总
C:\用户\yangd.
以下是Maven相关设置文件,本地仓库路径的位置
1 创建Maven项目报错 [WARNING] No archetype found in remote catalog. Defaulting to internal catalog(已解决)
问题描述:当创建maven-archetype-webapp时出现警告提示
[WARNING] No archetype found in remote catalog. Defaulting to internal catalog
解决方法参考链接https://blog.csdn.net/gao_zhennan/article/details/123247536
该博客文章讨论了在使用 Maven 生成项目模板时遇到的一个常见警告:“No archetype found in remote catalog. Defaulting to internal catalog”,并提供了解决方案。问题发生在使用 Maven 命令 mvn archetype:generate
时,这通常是由于 Maven 配置的镜像仓库中不包含 archetype-catalog.xml
文件导致的。作者在调试过程中发现从配置的阿里云镜像仓库中无法找到该文件。
解决方案分为以下几步:
-
在运行
mvn archetype:generate
时(这里改为在idea创建Maven项目时),暂时不使用任何镜像仓库,即使用 Maven 默认的中央仓库。 -
创建项目模板后,再配置镜像仓库以获取依赖和插件。
此外,作者还提到,这个警告并不会影响 Maven 命令创建项目的功能。对于希望从中央仓库获取更多项目模板的用户,可以直接访问 https://repo1.maven.org/maven2/archetype-catalog.xml
并将该文件保存到 Maven 用户目录(通常是 ~/.m2/
)中。这样做可以让用户访问上千个项目模板。尽管这样做可能仍会出现警告,但对正常使用 Maven 没有影响。
解决步骤:
-
修改Maven配置文件
-
重新创建 maven-archetype-webapp 项目,注意此时需要使用外网,需要将Clash的TUN模式打开!!否则还是会出错
-
创建成功
2 遇到Maven导入不进来报错Failed to read artifact descriptor for com.fasterxml:classmate:jar:1.5.1
测试发现 即使导入其他依赖,比如 mybatis-plus-boot-starter 版本号 3.5.2 也导入失败
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<!--<version>3.4.3</version>-->
<version>3.5.2</version>
</dependency>
C:\用户\yangd.m2\repository
删除repository文件夹
安装 maven helper插件
重新再导入几遍就好使了,注意网络连接有没有代理之类的
3 Maven 在 dependencyManagement 中导入配置报错Dependency 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' not found-pom.xml文件爆红
问题发生的原因:
在刷新 Maven 时,这通常是由于 Maven 配置的镜像仓库/中央仓库中不包含
org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0
文件导致的。在调试过程中发现从配置的阿里云镜像仓库中无法找到该文件。
<dependencyManagement>
<dependencies>
<!--配置springboot 整合mybatis的依赖 mybatis starter-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<!--在这里指定mysql、mybatis.spring.boot.version的版本,不使用版本仲裁
<properties>
<mybatis.spring.boot.version>2.2.0</mybatis.spring.boot.version>
</properties>
-->
<version>${mybatis.spring.boot.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
创建springcloud项目时,在<dependencyManagement>标签中锁定版本时报错如下:
刷新Maven还是报错
因为这时的maven配置的是Maven中央仓库
C:\Users\yangd.m2\settings.xml中的配置如下:
配置在Maven设置文件中默认的url地址:http://my.repository.com/repo/path
查看maven中央仓库文档https://mvnrepository.com/ 是否有版本为2.2.0的mybatis-spring-boot-starter依赖 发现有2.0.0这个版本
从中央仓库下载依赖的地址是 https://repo.maven.apache.org/maven2
3.1 maven中三个和maven中央仓库相关的地址的说明
这三个地址各自的作用和区别如下:
1.
-
作用:这是一个便于浏览和搜索 Maven 项目和其依赖的网站。用户可以通过这个网站方便地查找需要的库及其不同版本的详细信息,包括库的 Maven 坐标(groupId, artifactId, version),依赖关系,以及如何在项目中添加这些依赖。
-
说明:虽然这个网站提供了库的详细信息和配置示例,它本身并不是一个仓库服务器,也就是说,它不提供二进制的依赖文件下载服务。它更多的是一个依赖信息的聚合和展示平台。
2. 示例仓库 URL (http://my.repository.com/repo/path)
-
作用:这通常是一个示例或自定义的 Maven 仓库地址,用于企业内部或第三方 Maven 仓库。企业和开发组织通常会设置内部仓库来加速依赖管理过程,保证依赖的可用性,以及控制和优化构建过程中使用的第三方库。
-
说明:在 Maven 的
settings.xml
或项目的pom.xml
中配置此类 URL,可以让 Maven 用户从指定的仓库地址下载或上传依赖项。这类仓库可能是公开的或需要认证的,具体取决于仓库的设置。
3. Maven 中央仓库 (https://repo.maven.apache.org/maven2)
-
作用:这是 Maven 的官方中央仓库,用于全球范围内的 Maven 用户下载各种开源库的标准版本。几乎所有公开发布的 Java 库都可以在这个仓库中找到。
-
说明:当 Maven 构建项目时,除非另有指定,否则它默认从这个地址下载所需的所有依赖项。这个仓库包含了广泛的开源项目,是 Maven 默认的、最基本的依赖来源。
检查特定依赖(例如:mybatis-spring-boot-starter)
要查看 mybatis-spring-boot-starter
版本 2.2.0
是否存在于 Maven 中央仓库,可以通过以下任一方式进行:
-
在 MVNRepository 网站搜索:通过
-
直接访问 Maven 中央仓库:通过构造 URL 访问路径
https://repo.maven.apache.org/maven2/org/mybatis/spring/boot/mybatis-spring-boot-starter/
,并查看是否有2.2.0
目录存在。
通过以上解释和说明,希望你对这些 Maven 相关的网址和其作用有了清晰的理解。
解决方法,新建一个Maven项目 真正的导入一下这个jar
刷新Maven
当新建的项目导入成功后,创建的springcloud项目 e-commerce-center2的pom.xml中的
dependencyManagement标签中指定的版本也不再报错了
需要注意的是:dependencyManagement标签主要用于锁定版本,本身并不引入依赖jar,即刷新Maven时看不到依赖的引入dependencies
总结:
-
Maven下载下来的依赖会保存在本地磁盘C:\Users\yangd.m2\repository文件中
-
Maven会去哪里下载依赖的文件会根据Maven配置在C:\Users\yangd.m2\settings.xml文件中的<mirror>标签的url路径下载文件
-
如果Maven刷新失败,可以切换配置在C:\Users\yangd.m2\settings.xml文件中的<mirror>标签的url路径下载文件的url,比如使用阿里镜像
-
如果使用默认的Maven中央仓库注意需要外网,打开TUN模式
3.2 Maven 在pluginManagement -plugins - plugin 中报错解决方案-pom.xml文件爆红
刷新Maven之前需要注意的几点
-
如果走的是默认的maven中央仓库配置,则需要配置proxy
-
确保网络畅通
上面的猜测错误,主要原因是没有在dependence中导入过该插件导致的,需要导入一次
解决方案和在 dependencyManagement 报错方案解决方式一样,需要在dependence中真正的导入一下该插件即可!!
插件的导入方式为:在dependencies同一级下面的build中导入插件,如下所示(和解决该问题无关,只是一个插件的导入方式)
解决方案(已成功解决):
在dependency导入一下插件,即可解决默认情况下,没有导入过的插件jar pluginManagement-plugins中爆红问题,只要导入了一次,即使注销掉插件的导入<dependency> 在build-pluginManagement-plugins-plugin 的插件也不会报错了,重点即是需要真正的导入过一次
<!-- 需要使用 dependency 进行真正引入插件依赖后才可以在
build-plugins-plugin 中使用 groupId、artifactId进行导入插件
(如分布式项目hspliving->hspliving-commodity->pom.xml中的插件导入方式)
在下面这里dependency导入一下插件,即可解决默认情况下,没有导入过的插件jar
pluginManagement-plugins中爆红问题,只要导入了一次,即使注销掉插件的导入<dependency>
在build-pluginManagement-plugins-plugin 的插件也不会报错了,重点即是需要真正的导入过一次
dependency中导入插件后,同时也可以在build-pluginManagement-plugins-plugin 标签下
仅使用artifactId和version指定插件和插件的版本了
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
-->
maven web项目 web-hello-maven 的pom.xml文件如下: