Gitlab CI集成Maven与JFrog Artifactory时maven-clean-plugin拉取失败
操作错误点
- 你创建的是generic通用类型本地仓库,而非Maven类型仓库,Maven插件和依赖无法在generic类型仓库中完成索引、识别和拉取匹配
- 你未在Artifactory中配置Maven公网仓库的代理源,也没有把本地仓库和代理仓库绑定到同一个Maven虚拟仓库,导致Maven请求只在你的本地空仓库里查找资源,无法路由到公网拉取缺失的插件
- 你配置的
MAVEN_REPO_KEY对应的是仅存储私有构建产物的本地release仓库,没有使用包含公网代理能力的虚拟仓库标识
解决配置步骤
方案一:走Artifactory代理所有Maven请求(推荐)
- 删除之前创建的generic类型仓库,重新创建三类Maven类型仓库:
- 本地仓库:类型选
maven(local),用于存储你自己构建上传的私有依赖 - 远程代理仓库:类型选
maven(remote),远程地址填公网Maven中央仓地址https://repo1.maven.org/maven2/,开启远程缓存配置 - 虚拟仓库:类型选
maven(virtual),把上面创建的本地仓库、远程代理仓库都加入到该虚拟仓库的成员列表,可将远程代理仓库的排序调整到最前
- 本地仓库:类型选
- 将环境变量
MAVEN_REPO_KEY的值修改为你刚创建的Maven虚拟仓库的标识key - 重新运行CI即可,首次运行时Artifactory会自动从公网拉取缺失的Maven插件并缓存,后续请求会直接返回本地缓存的资源
方案二:Maven插件直接从公网拉取,不走Artifactory
若不需要通过Artifactory代理公网资源,直接修改项目根目录下的settings.xml,添加公网插件仓库配置即可:
<settings> <!-- 原有配置保持不变 --> <pluginRepositories> <pluginRepository> <id>maven-central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </settings>
内容的提问来源于stack exchange,提问作者user14335285
相关产品推荐
相关产品推荐

