9

我正在尝试在我的 Maven 项目中使用 netty-codec-hhtp。我有一个完全标准的 Sonatype Nexus 设置来代理对 Maven Central 的请求。

<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-codec-http</artifactId>
  <version>4.0.9.Final</version>
</dependency>

使用 Maven 构建时失败。如果我在 Nexus 中手动搜索它,我会找到它,但如果我去下载 jar,它会告诉我:

404 - Not Found
Automatic routing filter rejected remote request for path /io/netty/netty-codec-http/4.0.9.Final/netty-codec-http-4.0.9.Final.jar from M2Repository(id=central)

这甚至意味着什么,为什么我会得到它,也许更重要的是,我该如何解决它?我将 Nexus 2.5.0-04 与 Maven 3.0.4 一起使用

下载其他工件似乎工作得很好。

4

3 回答 3

14

更新:这原来是 CDN 配置的问题,现在应该解决。以下强制和/或禁用远程发现的步骤留作参考。

这意味着 Central 的自动路由处于活动状态,并且发现的规则不包含io.jetty作为允许的前缀。

这不应该发生,因为默认配置应该每天更新规则(如下面的屏幕截图所示,显示了 Central 的默认自动路由配置)。

补救措施是强制更新规则(我确实检查过,前缀/io在中央发布的规则中),或者完全禁用远程发现。

尝试如下屏幕截图所示的步骤:

截屏

于 2013-10-08T12:22:56.227 回答
1

来自使用 Nexus 的存储库管理 - 6.4。管理路由

路由可以被认为是 Nexus 执行的内部活动,以确定在 Maven 存储库中查找特定组件的位置。路由信息会影响组件检索的性能以及确定组件的可用性。
(...)
自动路由由 Nexus 在每个存储库的基础上处理。
(...)
路由信息由存储库目录结构的前两级组成,并存储在 prefixes.txt 文件中。它允许 Nexus仅自动将具有相应 groupId 值的组件请求路由到存储库,以避免不必要的索引甚至远程存储库访问。

由于 Maven 中央存储库包含该工件,我假设自动路由规则禁止远程下载该工件。您发布的错误消息也表明了这一点。

您可以阅读如何在6.4.2 下添加路由规则。手动路由配置。如果我的假设是正确的,这种情况应该通过为中央仓库添加一个带有路由的inclusive规则类型来解决。^/io/netty/.*

于 2013-09-30T12:54:20.990 回答
1

在 2 Nexus 之间配置网桥时,我遇到了同样的问题。

在第一个:

  1. 我添加了 2 个代理仓库,第二个针对 2 个公共仓库组,
  2. 然后将这 2 个代理存储库聚合到一个新组中,
  3. 我终于添加到第一个 Nexus 公共回购组的回购列表中

使用第一个 Nexus,每次我请求仅存在于第二个的依赖项时,我都会遇到Automatic routing filter rejected remote request for path...异常。

正如 Tamas 所提到的,这个问题来自Routing >> Discovery我的 2 个代理存储库中启用的功能,这些代理存储库针对远程 Nexus 存储库组一旦禁用,问题就解决了

这种需求的确切解释在官方 Sonatype 文档中以某种方式解释了Repository Management with Nexus,在第 6.4.1 章自动路由:

图 6.18 “代理存储库的自动路由”中显示的代理存储库的路由选项卡包含发现部分。它显示有关前缀文件访问的状态和更详细的消息。上次运行字段显示上次执行前缀文件发现的日期和时间。这样的执行可以通过按下立即更新按钮来触发。否则,更新间隔允许您每 1、2、3、6、9 或 12 小时触发一次新发现,或者每天或每周执行一次。

[...]

对于代理存储库,前缀文件要么从远程存储库下载,要么通过抓取远程存储库尝试生成。这一代不会尝试用于远程Nexus 存储库组,因为它们本质上过于动态,不应该直接代理。支持抓取托管或代理存储库以及基于 Subversion 的存储库。

问候,托马斯

于 2015-04-13T12:27:19.750 回答