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

使用gradle在代理存储库上解决常春藤依赖关系会导致资源缺失

樊宏邈
2023-03-14

我们有一种主从存储库方法,将nexus pro设置为主存储库,nexus pro设置为从存储库,其中我们的快照和发布存储库配置为代理(此外,使用sonatype nexus的smartproxy技术)。

我们的项目是基于Gradle和Ivy的多项目构建。我们使用动态版本(例如1。)定义和解决依赖关系。

问题是无法在代理上解决工件,该代理已正确发布到主存储库,并且未转发到从(代理)存储库(例如,由于网络问题或在发布给定工件后可以设置从存储库)。

正如我发现的(请参阅gradle中的docu),gradle依赖项解析器使用目录列表:

如果依赖项声明为动态版本(如1.),Gradle会将其解析为存储库中最新的可用静态版本(如1.2)。对于Maven存储库,这是使用maven-metadata.xml文件完成的,而对于Ivy存储库,这是通过目录列表完成的。

不幸的是,由于该工件和目录结构不可用,解析过程失败。调用gradle--info--刷新依赖项

Executing task ':resolve' (up-to-date check took 0.001 secs) due to:
Task has not declared any outputs.
Resource missing. [HTTP GET:     http://proxy/nexus/content/repositories/testrepo/com/company/smpro/test/SmartproxyTest/]
:resolve FAILED
:resolve (Thread[main,5,main]) completed. Took 0.668 secs.

我本以为Nexus正在解析主机上的URL,其中工件列表可以通过目录列表获得,但事实并非如此。如果我将上层URL放入浏览器,我会得到404:

404 - ItemNotFoundException
Request is marked as local-only, remote access not allowed from M2Repository(id=testrepo)

如果我把它称为主回购,它当然会起作用。

我现在的问题是:有没有人有任何线索,为什么不能通过代理在主机上解决这个问题,通常应该这样做?

谢谢你,弗雷德

共有1个答案

公西天逸
2023-03-14

Nexus代理存储库填充其本地磁盘存储,以响应对远程文件的请求。只有通过代理请求的文件存储在其磁盘缓存中。

因此,通过代理通过目录列表进行解析不会很好。

从您的请求路径来看,您可能正在使用Nexus Professional智能代理功能。如果是这样,您可以通过在代理的“智能代理”选项卡中选择“立即下载更新的工件”来部分解决这个问题。这不适用于尚未下载的工件。

 类似资料:
  • 问题内容: 我在ivaven.xml中添加了一个依赖项(让我们将其命名为A),它在maven Central中具有一个pom文件。Ivy使用ibiblio解决了Maven依赖关系。添加到ivy.xml的依赖项(A)具有传递的依赖项(B)。到目前为止,到目前为止很好。常春藤无法解决传递性依赖项(B)的依赖项(C)。 我在ivy.xml中定义了A,如下所示: 在B的pom文件中,在编译和测试范围中都定

  • 使用日食(赫利俄斯)的常春藤2.2和常春藤DE 2.2。... 想从http://maven . spring framework . org/milestone/org/spring framework/data/spring-data-neo4j/2 . 1 . 0 . m1获取spring-data-neo4j及其默认依赖项 在我的常春藤文件中使用以下内容: 以及我的设置文件中的这些解析器:

  • 我无法使用Apache Ivy解决我的vaadin 7项目。每当我尝试时,它都会显示一个错误框,其中显示 “常春藤解决”遇到了一个问题。某些项目无法解决。 在单击错误框上的“详细信息”按钮时,我得到了以下附加信息 某些项目无法解决无法解决com.example#v7proj;的依赖项;working@User无法解析的依赖项:com.vaadin#vaadin客户端已编译;7.6.2:未找到未解析

  • 我有一个简单的文件: 其中是我的配置名称,是映射的Maven类型。这被正确解析并给我这些文件: 现在,我必须添加这个依赖项: 它将< code>validation-api作为其依赖项,与我在顶部指定的相同。 艾薇解决了这个问题,给了我这些文件: 但这次没有检索到文件。为什么?我认为这个文件没有冲突……我应该怎么做才能拥有和jar(二进制和源代码)?

  • 我有一个项目,我正在覆盖到gradle。该项目有一些依赖项,如junit等。依赖项的Jars被下载,但这些Jars的依赖项没有下载。build.gradle文件如下 为什么测试:项目:17.20.快照不需要下载罐子?这个东西适用于蚂蚁常春藤项目 更新 1 我加了常春藤。测试项目的xml文件

  • 我正在尝试使用IVY,并且我已经在springsource工具套件中设置了我的IVY-de。 在尝试构建我的工作空间时,我得到了以下错误。 说明资源路径位置类型类路径发布/导出依赖项C:/Users/user1/.ivy2/cache/jstl/jstl.jars/jstl-1.2.jar无效。项目包含另一个具有相同存档名称的依赖项。Web P/Web类路径依赖关系验证器消息 在这方面,我们非常感