【问题标题】:How to force Maven to use jcenter repoistory如何强制 Maven 使用 jcenter 存储库
【发布时间】:2019-10-04 15:09:04
【问题描述】:

我试图通过 mvn 获取依赖关系,但问题是其中一个包不在官方 repo 中。我已经设法将 jcenter 添加到源中,但 maven 似乎不适合在那里查看。

这里正确地寻找下一个回购

Downloading from central: https://repo.maven.apache.org/maven2/io/ktor/ktor-client-core/1.2.5/ktor-client-core-1.2.5.pom
Downloading from central: https://jcenter.bintray.com/io/ktor/ktor-client-core/1.2.5/ktor-client-core-1.2.5.pom

但这里没有:

Downloading from central: https://repo.maven.apache.org/maven2/io/ktor/ktor-http/1.2.5/ktor-http-1.2.5.pom
[WARNING] Missing POM for io.ktor:ktor-http:jar:1.2.5

mvn -Dartifact=io.ktor:ktor-client-core:1.2.5 -DremoteRepositories=central::default::https://jcenter.bintray.com/ dependency:get

【问题讨论】:

  • 虽然我看到您决定从 Maven 切换到 Gradle,但如果您要继续使用 Gradle,然后使用 JCenter 存储库,您只需要在构建文件中添加 repositories { jcenter() }

标签: maven jcenter


【解决方案1】:

io.ktor 工件目前在 Maven Central 中不适用于 1.2.4 之后的版本。因此它们必须从Jcenter repository 下载。

ktor-http 具有依赖关系ktor-utils。当调用 ktor-http 的依赖插件时,Maven 也会尝试下载 ktor-utils 工件。不幸的是,参数-DremoteRepositories= 仅被考虑到工件ktor-http 而不是依赖项ktor-utils。 Maven 尝试从 Maven 中心下载 ktor-utils 并失败。

你可以通过调用来解决问题

mvn -Dartifact=io.ktor:ktor-utils:1.2.5 -DremoteRepositories=central::default::https://jcenter.bintray.com/  dependency:get

在下载ktor-http之前。但是,这种方法需要大量手动下载步骤,我不建议这样做。

更好的解决方案是将add Jcenter 存储库直接发送到您的 pom:

<project>
  [...]
  <repositories>
    <repository>
      <id>jcenter</id>
      <name>jcenter</name>
      <url>https://jcenter.bintray.com</url>
    </repository>
  </repositories>
  [...]
</project>

第三种选择是将 Jcenter 存储库添加到您的 settings.xml

【讨论】:

  • 您可以创建一个 pom,仅用于下载工件。或者您按照我在答案第一部分中的描述手动下载工件。
  • 一般我已经放弃了 mvn 依赖并使用直接下载github.com/majkrzak/kot/blob/master/src/resolver.py
  • 我只是想补充一点,您可以将额外的 repo 添加到您的 settings.xml 中,但是查看您的链接这对您没有帮助..
  • 无论如何你都可以将其添加到答案中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 2021-06-16
  • 2019-01-21
  • 2022-11-22
相关资源
最近更新 更多