Shrinkwrap 不会从本地存储库加载依赖项,尽管它存在

Shrinkwrap doesn't load dependency from local repository, although it exists

我有一个在项目上运行 mvn clean verify 的 Jenkins 作业。但是由于 Shrinkwrap 解析器无法解析的 2 个依赖项,一些集成测试失败了。

Jenkins 服务器和从服务器位于不允许访问中央存储库的内部网络中。但是我们有一个 Nexus 存储库,其中包含所有必需的包。

当 运行 Jenkins 作业以 UNSTABLE 和两个失败的集成测试结束时。两条消息如下所示:

Nov 17, 2017 1:02:25 PM org.jboss.shrinkwrap.resolver.impl.maven.logging.LogTransferListener transferFailed WARNUNG: Failed downloading com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.7.4/jackson-datatype-jsr310-2.7.4.pom from https://repo.maven.apache.org/maven2/. Reason: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.fasterxml.jackson.datatype:jackson-datatype-jsr310:pom:2.7.4 from/to central (https://repo.maven.apache.org/maven2): Error transferring file: repo.maven.apache.org Nov 17, 2017 1:02:25 PM org.jboss.shrinkwrap.resolver.impl.maven.logging.LogTransferListener transferFailed WARNUNG: Failed downloading com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.7.4/jackson-datatype-jsr310-2.7.4.pom from http://repo1.maven.org/maven2/. Reason: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.fasterxml.jackson.datatype:jackson-datatype-jsr310:pom:2.7.4 from/to central (http://repo1.maven.org/maven2): Error transferring file: repo1.maven.org

为了解决这个问题,我添加了一个预构建步骤来下载工件。日志显示工件已下载:

Resolving artifact com.fasterxml.jackson.datatype:jackson-datatype-jsr310:pom:2.7.4 Resolved artifact com.fasterxml.jackson.datatype:jackson-datatype-jsr310:pom:2.7.4 from central (, releases+snapshots)

我也手动签入:pom 文件在本地存储库中。

为什么它不能解析明明在本地存储库中的工件?

终于找到方法了。我提供 settings.xml 并将目标设置为 "csettings.xml"。然后我将参数传递给构建目标和选项:"-Dorg.apache.maven.user-settings=$WORKSPACE/csettings.xml"

此外,如果有人需要连接两个设置文件,可以通过设置全局设置和用户设置来完成

-Dorg.apache.maven.global-settings=global-settings.xml -Dorg.apache.maven.user-settings=user-settings.xml 

在我的例子中,这在 Jenkins 中很有用,可以将配置存储在全局设置中,并将凭证存储到用户设置中的服务器,这些凭证作为秘密存储。