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 中很有用,可以将配置存储在全局设置中,并将凭证存储到用户设置中的服务器,这些凭证作为秘密存储。
我有一个在项目上运行 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 中很有用,可以将配置存储在全局设置中,并将凭证存储到用户设置中的服务器,这些凭证作为秘密存储。