java Maven 无法通过强制身份验证从 HTTPS Nexus 下载工件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10601297/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Maven can't download artifacts from HTTPS Nexus with mandatory authentication
提问by Dmitriy Sukharev
I have a Nexus that is available via HTTPS. Only authorized users have rights to access it. Using Maven, when all required artefacts are in local repo, I could even deploy building artefact. But when I remove some of required artifacts from local repository, the build fails.
我有一个可通过 HTTPS 访问的 Nexus。只有授权用户才有权访问它。使用 Maven,当所有必需的人工制品都在本地存储库中时,我什至可以部署构建人工制品。但是当我从本地存储库中删除一些必需的工件时,构建失败。
Downloading: https://example.com/nexus/content/groups/all/org/springframework/spring-test-mvc/1.0.0.BUILD-SNAPSHOT/spring-test-mvc-1.0.0.BUILD-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] example - project1 ..................................... SUCCESS [0.500s]
[INFO] example - project2 ..................................... FAILURE [2.951s]
[INFO] example - project3 ...................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.599s
[INFO] Finished at: Tue May 15 13:58:13 EEST 2012
[INFO] Final Memory: 6M/121M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project example - project2: Could not resolve dependencies for project com.example:example-project:jar:1.2.0-SNAPSHOT: Failed to collect dependencies for [com.example:example-project:jar:1.2.0-SNAPSHOT (compile), org.springframework:spring-beans:jar:3.1.1.RELEASE (compile), org.springframework:spring-context:jar:3.1.1.RELEASE (compile), org.springframework:spring-core:jar:3.1.1.RELEASE (compile), org.springframework:spring-test:jar:3.1.1.RELEASE (test), org.springframework:spring-web:jar:3.1.1.RELEASE (compile), org.apache.httpcomponents:httpclient:jar:4.1.1 (test), org.codehaus.Hymanson:Hymanson-mapper-asl:jar:1.9.6 (compile), org.springframework:spring-test-mvc:jar:1.0.0.BUILD-SNAPSHOT (test), junit:junit:jar:4.10 (test), org.mockito:mockito-all:jar:1.9.0 (test), org.hamcrest:hamcrest-all:jar:1.1 (compile), org.slf4j:slf4j-api:jar:1.6.1 (compile), org.slf4j:slf4j-log4j12:jar:1.6.1 (compile), log4j:log4j:jar:1.2.16 (compile), log4j:apache-log4j-extras:jar:1.1 (compile)]: Failed to read artifact descriptor for org.springframework:spring-test-mvc:jar:1.0.0.BUILD-SNAPSHOT: Could not transfer artifact org.springframework:spring-test-mvc:pom:1.0.0.BUILD-SNAPSHOT from/to nexus (https://example.com/nexus/content/groups/all): Not authorized, ReasonPhrase:Unauthorized. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :grc-webclient-services
There is the following content in settings.xml of my user:
我的用户的settings.xml中有如下内容:
<settings>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>https://example.com/nexus/content/groups/all</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<properties>
<sonar.jdbc.url>jdbc:mysql://localhost:3306/sonardb?useUnicode=true&characterEncoding=utf8</sonar.jdbc.url>
<sonar.jdbc.driverClassName>com.mysql.jdbc.Driver</sonar.jdbc.driverClassName>
<sonar.jdbc.username>sonarusername</sonar.jdbc.username>
<sonar.jdbc.password>sonarpw</sonar.jdbc.password>
<sonar.host.url>http://localhost:9000/</sonar.host.url>
</properties>
<repositories>
<repository>
<id>central</id>
<url>https://example.com/nexus/content/groups/all</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://example.com/nexus/content/groups/all</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<servers>
<server>
<id>all</id>
<username>user</username>
<password>pw</password>
</server>
<server>
<id>releases</id>
<username>user</username>
<password>pw</password>
</server>
<server>
<id>snapshots</id>
<username>user</username>
<password>pw</password>
</server>
</servers>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
When I downloaded artifacts from this Nexus using wget, I had to add --no-check-certificate key to skip server's certificate ('cause it's self-signed), and after that I could download it using wget.
当我使用 wget 从这个 Nexus 下载工件时,我必须添加 --no-check-certificate 密钥来跳过服务器的证书(因为它是自签名的),然后我可以使用 wget 下载它。
I fould Java key -Dsun.security.ssl.allowUnsafeRenegotiation=true, but it didn't change anything at all.
我犯了 Java 密钥 -Dsun.security.ssl.allowUnsafeRenegotiation=true,但它根本没有改变任何东西。
After that I found that it's maybe not a self-signed certificate problem 'cause I've added server's certificate to trusted list using command:
之后我发现这可能不是自签名证书问题,因为我已使用以下命令将服务器的证书添加到受信任列表中:
keytool -keystore $JAVA_HOME/jre/lib/security/cacerts -import -file certificate.cer
Does somebody have an idea how I can download artifacts from Nexus in build-time?
有人知道如何在构建时从 Nexus 下载工件吗?
采纳答案by Dmitriy Sukharev
I had to change
我不得不改变
<server>
<id>all</id>
<username>user</username>
<password>pw</password>
</server>
to
到
<server>
<id>nexus</id>
<username>user</username>
<password>pw</password>
</server>
where 'nexus' is the identifier of my mirror at the top of settings.xml
.
其中“nexus”是我在settings.xml
.
回答by feel good and programming
Add wagon-http-lightweight extension,Nice Explanation
添加 wagon-http-lightweight 扩展,很好的解释