Maven仓库从Nexus迁移到JFrog Artifactory踩坑

 1.概述

部门内用Nexus搭建Maven仓库,仓库中除了有配置阿里云仓库代理和中央仓库代理,也有部门自己封装的crmd平台jar包。

总体依赖传递为 spring-boot(官方) --> base-parent(crmd平台包) --> platform-parent(crmd平台包) --> app-parent(crmd平台包) --> 应用代码,平台的jar包在中间做了一些封装和优化,比如统一spring boot等版本号,部门所有的应用的引用的spring boot版本号一致,便于查询问题。

1).把crmd的包下载到本地仓库后,调整base-parent.pom的仓库地址,用JFrog Artifactory的仓库地址,替换Nexus的仓库地址。

2).本地的settings.xml中,用JFrog Artifactory的仓库地址,替换Nexus的仓库地址。

3)。mvn install  报了一堆的错误,吓死宝宝

2.问题一 报错缺少plugin插件

2.1.报错信息

具体报错截取信息如下:

[WARNING] The POM for org.apache.maven.plugins:maven-site-plugin:jar:3.8.2 is missing, no dependency information available

[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-site-plugin:3.8.2: Plugin org.apache.maven.plugins:maven-site-plugin:3.8.2 or one of its dependencies could not be resolved: Failure to find org.apache.maven.plugins:maven-site-plugin:jar:3.8.2 in http://10.128.22.193:8080/artifactory/group_public_maven/ was cached in the local repository, resolution will not be reattempted until the update interval of group_public_maven has elapsed or updates are forced

2.2.分析思路

从报错信息可以看到,是由于在中央仓库下载插件的时候报错,所以检查中央仓库是否有相关插件。

从http://10.128.22.193:8080/artifactory/group_public_maven 中央仓库,搜索相关插件,确实没找到。

后来对照Nexus的中央仓库配置,发现有个2个中央仓库地址没配置到jfrog。

https://repo1.maven.org/maven2/
https://maven.aliyun.com/nexus/content/groups/public

2.3 解决方案

将这2个地址配置到中央仓库组后,再次install,以上报错消失,问题解决

3.问题二 报错[FATAL] The parents form a cycle 

3.1.报错信息

具体报错截取信息如下:

[WARNING] The POM for com.ffcs.crmd.platform:crmd-platform-base:jar:2.1.0-20200108.084048-1 is invalid, transitive dependencies (if any) will not be available: 3 problems were encountered while building the effective model for com.ffcs.crmd.platform:crmd-platform-base:[unknown-version]

[ERROR] Invalid packaging for parent POM com.ffcs.crmd.platform:crmd-platform-base:[unknown-version], must be "pom" but is "jar" @ 

[ERROR] Invalid packaging for parent POM com.ffcs.crmd.platform:crmd-platform-base:[unknown-version], must be "pom" but is "jar" @ 

[FATAL] The parents form a cycle: com.ffcs.crmd.platform:crmd-platform-base:2.1.0-SNAPSHOT -> com.ffcs.crmd.platform:crmd-platform-base:2.1.0-SNAPSHOT @ 

3.2.分析思路

用mvn install,是可以正常编译,但是在运行的时候报缺少jar包,经过比对lib目录的jar包,发现是编译的时候,部分jar包没自动打包进来。

mvn dependency:tree命令,查看依赖,发现有个warning:xxx  is invalid, transitive dependencies (if any) will not be available,不是很明显,无法定位问题。

mvn dependency:tree -X命令,显示更多错误信息,如3.1

分析错误日志,同时有fatal和error,先看fatal,是说crmd-platform-base:2.1.0-SNAPSHOT.pom存在The parents form a cycle(大概是 父级节点存在循环依赖)。

于是查看本地仓库的crmd-platform-base:2.1.0-SNAPSHOT.pom,发现本级pom的artifactId与parent的artifactId一致,定位出是pom有问题,原来是上传jar的时候,选择自动选择生成pom,结果生成的pom有问题

<parent>

  <groupId>com.ffcs.crmd.platform</groupId>

  <artifactId>crmd-platform-base</artifactId>

  <version>2.1.0-SNAPSHOT</version>

 </parent>

 <artifactId>crmd-platform-base</artifactId>

3.3.解决方案

调整手动上传jar方法,一次上传的时候,同时选择jar和pom文件,重新mvn dependency:tree -X,问题解决。

4.总结

解决maven问题,要先对maven的依赖传递有了解。

仓库搜索顺序如下:local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central

父级pom的dependencyManagement里面的jar,你直接在子级工程中写<parent>标签是没有用的,不会自动引入的,

还要重写一下<groupId> ,<artifactId>。

父级pom的直接dependencies里面的jar,你直接在子级工程中写<parent>标签,就自动引入的。

分析错误日志,同时有fatal和error,先看fatal

原文地址:https://www.cnblogs.com/zzy020128/p/12332903.html

时间: 2024-10-31 10:22:12

Maven仓库从Nexus迁移到JFrog Artifactory踩坑的相关文章

maven仓库私 nexus 使用笔记

一. 配置代理仓库时nexus本身的请求代理配置 由于在公司内网办公,访问外网有限制,所以当三配置代理仓库时,neuxs本身需要设置访问代理,下载最新neuxs2.11.2版本, 在代理仓库配置页找不到Default http proxy Settins这一项,这项配置是在左侧面板->Administration->Server,点击链接,页面如下图所示: 然后填写代理主机和代理端口即可~ 来自为知笔记(Wiz)

maven仓库地址

使用Maven进行开发的时候,比较常见的一个问题就是如何寻找我要的依赖,比如说,我想要使用activeMQ,可是我不知道groupId,artifactId,和合适的version.怎么办呢?本文介绍几个提供maven仓库搜索服务的站点. 搜索出来结果后,把结果复制到pom.xml即可 例如: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId>

maven仓库--私服(Nexus的配置使用)

1.1 私服仓库是什么 私服,私有服务器,是公司内部Maven项目经常需要的东东.Nexus是常用的私用Maven服务器,一般是公司内部使用.其作用指定私服的中央地址.将自己的Maven项目指定到私服地址.从私服下载中央库的项目索引.从私服仓库下载依赖组件.将第三方项目jar上传到私服供其他项目组使用. 1.2 Nexus中的仓库 1.2.1 类型介绍: ?  hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库.比如公司的第二方库. ?  proxy,代理仓库,它们被用来代理远程的

使用Nexus搭建企业maven仓库(二)

先阅读<使用Nexus搭建企业maven仓库(一)> http://blog.csdn.net/ouyida3/article/details/40747545 1.官网目前最新的版本是2.10.0,从2.6开始就要求jdk7以上,否则报错: Unsupported major.minor version 51.0 (51.0是jdk1.7,,50.0是1.6,49是1,5,48是1.4) 2.如果机器不方便安装jdk1.7,下载2.5版本即可,下载地址: http://www.sonatyp

Maven仓库—Nexus环境搭建及简单介绍

1.    环境搭建 1.1  下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件--免费] NEXUS PROFESSIONAL -FREE TRIAL [专业版本--收费]. 所以选择NEXUS OSS 找到Download andInstall Nexus OSS.下载ZIP的即可: 1.2  配置 将下载的ZIP包解压,得到如下目录: 将Nexus的bin目录添加到Path环境变量中:

项目构建之maven篇:5.仓库及nexus创建私服-1

依赖坐标与本地仓库存储 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.0.7.RELEASE</version> </dependency> 本地仓库存储 仓库分类: 本地仓库: <localRepository>F:\maven\repos<

使用nexus搭建maven仓库(本地私服)

我们在使用maven的时候,对于项目所依赖的jar包,maven默认会在中央仓库下载jar包,到本地的磁盘目录(如果没有配置则是用户目录下/.m2/repository文件夹下).如果公司内部搭了一个maven私服的话,开发人员将仓库地址指向内网仓库地址,需要的jar包可直接在私服取,下载速度比远程要快,如果本地仓库没有则自动从远程下载并保存在本地.本文使用nexus搭建一个私服. 一.下载nexus 在浏览器中搜索 Sonatype Nexus 进入官网,找到下载 .下载之后解压压缩包如下:

国内好用的maven仓库,添加到本地nexus中

速度快的maven仓库真的难找,国外网站很多被封了.前天在网上找,有人说阿里有个公开的,速度很快.确实很快! 我添加到本地nexus中,结果不能更新索引,我是这么添加的,如下: 这个地址在浏览器中能够打开,也可以看到目录文件,但是nexus就是不能更新索引. 同事访问了http://maven.aliyun.com, 打开是一个nexus仓库.这启发了我,突然有个想法,试试看是否可行,就是照着它的配置来.

项目构建之maven篇:5.仓库及nexus创建私服-2

下载安装 下载地址 修改默认端口: home\conf\nexus.properties # Sonatype Nexus # ============== # This is the most basic configuration of Nexus. # Jetty section application-port=9080 application-host=0.0.0.0 nexus-webapp=${bundleBasedir}/nexus nexus-webapp-context-pa