当前位置: 首页 > 知识库问答 >
问题:

Maven无法从中央存储库下载工件

步衡
2023-03-14

我有两个私人JFrog存储库设置。一个存储库处理发布,另一个处理快照。下面是我如何在我的设置中定义它的。xml文件。

<settings>

    <activeProfiles>
        <activeProfile>default</activeProfile>
    </activeProfiles>

    <servers>
        <server>
            <id>central</id>
            <username>private-repo-username</username>
            <password>private-repo-password</password>
        </server>
        <server>
            <id>snapshots</id>
            <username>private-repo-username</username>
            <password>private-repo-password</password>
        </server>
    </servers>

    <profiles>
        <profile>
            <id>default</id>
            <repositories>
                <repository>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>central</id>
                    <name>a0d2olsx0t222-artifactory-primary-0-releases</name>
                    <url>https://my-private-repo.jfrog.io/artifactory/libs-release</url>
                </repository>
                <repository>
                    <id>snapshots</id>
                    <name>a0d2olsx0t222-artifactory-primary-0-snapshots</name>
                    <url>https://my-private-repo.jfrog.io/artifactory/libs-snapshot</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
</settings>

我的多模块maven项目中的多个内部依赖项都收到了这个错误:

[ERROR] Failed to execute goal on project platform-utils: Could not resolve dependencies for project
design.colspalinva:platform-utils:jar:2.2.1-SNAPSHOT: The following artifacts could not be resolved: 
com.maxmind.geoip2:geoip2:jar:2.12.0, org.apache.ant:ant:jar:1.10.5: Could not find artifact 
com.maxmind.geoip2:geoip2:jar:2.12.0 in central (https://my-private-repo.jfrog.io/artifactory/libs-
release) -> [Help 1]

从外观上看,Maven似乎并没有试图联系官方的Maven Central repo以获取这些依赖项,而是在我的私有存储库上失败了。我的印象是,如果私有存储库不包含特定工件,它将尝试联系Maven Central。

从Maven Central下载我的Spring依赖项没有问题。

共有2个答案

夏振国
2023-03-14

Maven设置。您共享的xml配置似乎还可以。您正在覆盖Maven的内置中央和快照存储库,这是确保Maven在默认情况下将请求发送到Artifictory的正确方法<正如另一个答案中所建议的那样,添加镜像任意设置意味着除了覆盖内置的Maven存储库外,您还可以使用镜像任意设置通过Artifictory将所有请求重定向到Maven存储库,包括插件和第三方依赖项的POM中定义的请求。

根据您共享的日志,Maven确实试图通过artiFactory-https://my-private-repo.jfrog.io/artifactory/libs-release解决工件。
这个问题似乎与artiFactory中特定工件的解析有关。
我假设libs-释放是一个虚拟的Maven存储库,它至少包含一个指向Jcenter或Maven Central的远程Maven存储库(如果不是,请从查看Maven存储库开始)。
要调试问题:

(1) 尝试使用cURL或web浏览器直接从Artifactory解析工件,例如:

curl -Uuser:pass https://my-private-repo.jfrog.io/artifactory/libs-release/com/maxmind/geoip2/geoip2/2.12.0/geoip2-2.12.0.jar  

(2) 如果您设法解决了工件,这意味着工件已正确配置,Maven应该能够解决。如果没有,请尝试查找执行跟踪的原因,例如:

curl -Uuser:pass https://my-private-repo.jfrog.io/artifactory/libs-release/com/maxmind/geoip2/geoip2/2.12.0/geoip2-2.12.0.jar?trace
乐正宜人
2023-03-14

如果您想将对central的所有访问从Maven重定向到您自己的存储库管理器,则必须配置设置。xml如下:

<! language:language-xml ->
<?xml version="1.0" encoding="UTF-8"?>
<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
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
   <mirrors>
      <mirror>
         <id>nexus</id>
         <mirrorOf>*</mirrorOf>
         <url>http://IP:PORT/repository/repo</url>
      </mirror>
   </mirrors>
   <profiles>
      <profile>
         <id>nexus</id>
         <repositories>
            <repository>
               <id>central</id>
               <url>http://central</url>
               <releases>
                  <enabled>true</enabled>
                  <updatePolicy>never</updatePolicy>
                  <checksumPolicy>fail</checksumPolicy>
               </releases>
               <snapshots>
                  <enabled>true</enabled>
                  <updatePolicy>always</updatePolicy>
                  <checksumPolicy>fail</checksumPolicy>
               </snapshots>
            </repository>
         </repositories>
         <pluginRepositories>
            <pluginRepository>
               <id>central</id>
               <url>http://central</url>
               <releases>
                  <enabled>true</enabled>
                  <updatePolicy>never</updatePolicy>
                  <checksumPolicy>fail</checksumPolicy>
               </releases>
               <snapshots>
                  <enabled>true</enabled>
                  <updatePolicy>always</updatePolicy>
                  <checksumPolicy>fail</checksumPolicy>
               </snapshots>
            </pluginRepository>
         </pluginRepositories>
      </profile>
   </profiles>
   <activeProfiles>
      <!--make the profile active all the time -->
      <activeProfile>nexus</activeProfile>
   </activeProfiles>
</settings>
 类似资料:
  • 问题内容: 我公司的政策不支持自动下载的工件(必须经过批准),因此,要使用Maven,我需要禁用对Maven中央存储库的访问。 换句话说,我不希望Maven尝试从Central下载任何内容。 我知道如何配置本地存储库(是否联网),我的想法是使用“受祝福的”计算机来更新本地存储库。 PS:我可以在代理/网络级别阻止请求,但是我在问如何使用Maven的配置来完成请求。 UPDATE 我终于想出了怎么做

  • 由于“需要HTTPS”错误,我最近在构建项目时遇到了问题。这个问题通过如下所述修改我的pom.xml得到了解决,添加了以下内容: 然而,为我的每个项目更新每个pom.xml是一件麻烦的事。 我尝试将相同的代码片段添加到我的settings.xml,但没有成功。 我知道更新版本的Maven解决了这个问题。然而,由于工作限制,我无法更新我的环境。 我目前已经安装了Java8和Maven,由Netbea

  • 有没有办法使用java或任何其他语言从maven存储库下载jar文件? 在Maven项目中,当我添加依赖项时,如果本地系统上不存在jar文件,它通常会从远程存储库下载jar文件。 有没有办法做到这一点,而不用像在库中那样使用Maven,或者构造一个URL,然后获取jar?

  • 我们在JFrog艺术工厂中设置了虚拟和远程存储库。最近,我们在从中央提取包时看到了问题。例如,艺术工厂的最新版本是2.3.1:https://xxx.xxx.xx/artifactory/mvn_central/de/codecentric/spring-boot-admin-starter-server/最新版本是2.4.1:https://mvnrepository.com/artifact/

  • 我有以下问题:出于测试目的,我使用FTP服务器作为存储库。部署(上传)不同的工件都可以正常工作。一旦我需要解析和下载之前上传到该存储库的工件依赖项,我就会收到以下警告: [WARN]myrepo(ftp://ftp.myftpadress.fr/dev/M2Repo/,发布快照)被忽略(仅支持S3、HTTP/S和FILE)。 我无法使用HTTP协议访问存储库。那么货车是否支持FTP协议来下载所需的

  • 我正在尝试在我的笔记本电脑上创建一个swarm设置。我正在笔记本电脑上运行swarm守护进程,并作为docker节点运行2个Ubuntu14.04VM。在其中一个节点上,我可以运行swarm,并且可以连接到swarm守护进程。我可以用docker信息列出节点,并在其上生成一个容器。但是当我尝试在另一个VM节点上拉swarm映像时,我得到以下错误: 更新:这是一个不同的东西。我是在家里试的。今天早上