如何强制 Maven 使用 jcenter 存储库

How to force Maven to use jcenter repoistory

我试图通过 mvn 获取依赖项,但问题是其中一个软件包不在官方仓库中。我已经设法将 jcenter 添加到源代码中,但 maven 似乎无法在那里查看。

这里它正在正确地寻找下一个 repo

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

对于高于 1.2.4 的版本,io.ktor 工件目前在 Maven Central 不可用。因此必须从 Jcenter repository.

下载它们

ktor-http 具有依赖性 ktor-utils。当调用 ktor-http 的依赖插件时,Maven 也会尝试下载 ktor-utils 工件。不幸的是,参数 -DremoteRepositories= 仅被考虑用于工件 ktor-http 而不是用于依赖项 ktor-utils。 Maven 尝试从 Maven Central 下载 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