为什么 Maven 出现了“401未授权”错误?

为什么 Maven 出现了“401未授权”错误?

下面是我在调用 mvn deploy(底部为完整日志)时得到的错误:

[INFO] BUILD FAILURE
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project xbnjava: Failed to deploy artifacts: Could not transfer artifact com.github.aliteralmind:xbnjava:pom:0.1.2 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]

根据 Sonatype 支持页面:

“如果你收到的是401,那是因为 Maven 发送了错误的登录凭据,或者根本没有凭据。”

下面是我所采取的步骤,下面是完整的 settings.xmlpom.xml文件,下面是来自 mvn deploymvn deploy -e的完整日志。

任何想法都可以,我正在和 Maven 一个接一个的碰壁。


当收到一个401错误时,我跟随 声纳打字机检查表:

清单项目1。通过登录 Nexus UI 确保您的用户名/密码是正确的。如果您的机器上安装了 curl,您可以尝试使用..。

  • 我使用 settings.xml中的 user/pass 成功地登录和退出 sonatype.org 网站。
  • I 未遂使用 curl手动部署工件,使用以下命令

[C:\]curl -u MY_SONATYPE_DOT_COM_USERNAME:MY_SONATYPE_DOT_COM_PASSWORD https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/xbnjava-0.1.2-20140716.224928-1.pom --request PUT --data @pom.xml

但有个错误:

Warning: Couldn't read data from file "pom.xml", this makes an empty POST.
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html


curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.

我用 -k选项再次运行它,这次只得到这个:

Couldn't read data from file "pom.xml", this makes an empty POST.

我以前从未使用过 curl,所以我不知道该如何处理这些信息。

清单项目2。如果没有错误输出,请确保在服务器上正确配置了您的用户权限。确保删除您刚刚创建的回购。

我不知道“ drop”是什么意思。我相信我的权限已经安装好了,因为我收到了来自 sonatype 的这条消息:

在过去的几天里,我 通过 mvn deploy成功地把 这些东西放到了服务器上。

项目设置:

project settings

清单项目3。确保在 settings.xml中配置了服务器,并且服务器 ID 与 pom.xml 中的分发存储库 id 相同。

  • settings.xml中,设置/server/server/id 等于 ossrh
  • pom.xml中,distribution tionManagement/е Repository/id 等于 ossrh

(完整文件在底部)

清单第4项。< em > 确保 setings.xml 在正确的位置(通常是 _ ~/。M2/setings.xml).您可以通过运行 mvn help: effect-sets 来检查这一点。

根据 Maven 的 设置参考,setings.xml 必须位于以下两个位置之一:

  • Maven 安装: $M2_HOME/conf/settings.xml
  • 用户的安装: ${user.home}/.m2/settings.xml

这是我的设置:

  • settings.xml: C:\applications\programming\apache-maven-3.2.2\conf\settings.xml
  • M2_HOMEC:\applications\programming\apache-maven-3.2.2

mvn help:effective-settings的输出:

[C:\applications\utilities\curl]
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.2:effective-settings (default-cli) @ standalone-pom ---
[INFO]
Effective user-specific configuration settings:


<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Generated by Maven Help Plugin on 2014-07-18T12:48:19                  -->
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/                -->
<!--                                                                        -->
<!-- ====================================================================== -->


<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Effective Settings for 'jeffy' on 'kermit-the-frog'                    -->
<!--                                                                        -->
<!-- ====================================================================== -->


<settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc
hemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
<localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">C:\Users\jeffy\.m2\repository</localRepository
>
<servers xmlns="http://maven.apache.org/SETTINGS/1.1.0">
<server>
<username>MY_SONATYPE_DOT_COM_USERNAME</username>
<password>***</password>
<id>ossrh</id>
</server>
</servers>
<pluginGroups xmlns="http://maven.apache.org/SETTINGS/1.1.0">
<pluginGroup>org.apache.maven.plugins</pluginGroup>
<pluginGroup>org.codehaus.mojo</pluginGroup>
</pluginGroups>
</settings>


[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.310 s
[INFO] Finished at: 2014-07-18T12:48:19-04:00
[INFO] Final Memory: 7M/17M
[INFO] ------------------------------------------------------------------------

清单项目5。< em > 如果服务器使用 https,但 POM 中的 URL 是 http,那么您可能也会得到401。

我不明白它指的是哪个 url。

检查表项目6 . < em > 使用最新版本的 Maven,因为有一个关于401: MNG-4469的已知问题

我使用的是最新版本:

[C:\]mvn -version
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T09:51:42-04:00)
Maven home: C:\applications\programming\apache-maven-3.2.2
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: C:\applications\programming\jdk_7_51\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"

------------------

完整的 settings.xmlpom.xml文件

(下面是 mvn deploymvn deploy -e的完整日志)

返回文章页面

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>ossrh</id>
<username>MY_SONATYPE_DOT_COM_USERNAME</username>
<password>MY_SONATYPE_DOT_COM_PASSWORD</password>
</server>
</servers>


<pluginGroups></pluginGroups>
<proxies></proxies>
<mirrors></mirrors>
<profiles></profiles>
</settings>

Xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.aliteralmind</groupId>
<artifactId>xbnjava</artifactId>
<packaging>pom</packaging>
<version>0.1.2</version>
<name>XBN-Java</name>
<url>https://github.com/aliteralmind/xbnjava</url>
<inceptionYear>2014</inceptionYear>
<organization>
<name>Jeff Epstein</name>
</organization>
<description>XBN-Java is a collection of generically-useful backend (server side, non-GUI) programming utilities, featuring RegexReplacer and FilteredLineIterator. XBN-Java is the foundation of Codelet (http://codelet.aliteralmind.com).</description>


<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>


<licenses>
<license>
<name>Lesser General Public License (LGPL) version 3.0</name>
<url>https://www.gnu.org/licenses/lgpl-3.0.txt</url>
</license>
<license>
<name>Apache Software License (ASL) version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>


<developers>
<developer>
<name>Jeff Epstein</name>
<email>aliteralmind-github@yahoo.com</email>
<roles>
<role>Lead Developer</role>
</roles>
</developer>
</developers>


<issueManagement>
<system>GitHub Issue Tracker</system>
<url>https://github.com/aliteralmind/xbnjava/issues</url>
</issueManagement>


<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>


<scm>
<connection>scm:git:git@github.com:aliteralmind/xbnjava.git</connection>
<url>scm:git:git@github.com:aliteralmind/xbnjava.git</url>
<developerConnection>scm:git:git@github.com:aliteralmind/xbnjava.git</developerConnection>
</scm>


<properties>
<java.version>1.7</java.version>
<jarprefix>R:\jeffy\programming\build\/${project.artifactId}-${project.version}/download/${project.artifactId}-${project.version}</jarprefix>
</properties>
<!--
<profiles>
<profile>
<id>default-tools.jar</id>
<activation>
<property>
<name>java.vendor</name>
<value>Sun Microsystems Inc.</value>
</property>
</activation>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.4.2</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</profile>
</profiles>
-->
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${jarprefix}-all.jar</file>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>


<profiles>
<!--
This profile will sign the JAR file, sources file, and javadocs file using the GPG key on the local machine.
See: https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
-->
<profile>
<id>release-sign-artifacts</id>
<activation>
<property>
<name>release</name>
<value>true</value>
</property>
</activation>
</profile>
</profiles>
</project>

------------------

mvn deploymvn deploy -e的完整日志

mvn deploy输出:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building XBN-Java 0.1.2
[INFO] ------------------------------------------------------------------------
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ xbnjava ---
[INFO] --- build-helper-maven-plugin:1.8:attach-artifact (attach-artifacts) @ xbnjava ---
[INFO] --- maven-install-plugin:2.4:install (default-install) @ xbnjava ---
[INFO] Installing R:\jeffy\programming\sandbox\z__for_git_commit_only\xbnjava\pom.xml to C:\Users\jeffy\.m2\repository\com\github\aliteralmind\xbnjava\0.1.2\xbnjava-0.1.2.pom
[INFO] Installing R:\jeffy\programming\build\xbnjava-0.1.2\download\xbnjava-0.1.2-all.jar to C:\Users\jeffy\.m2\repository\com\github\aliteralmind\xbnjava\0.1.2\xbnjava-0.1.2.jar
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ xbnjava ---
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom
2/6 KB
4/6 KB
6/6 KB

(失败部分:)

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.204 s
[INFO] Finished at: 2014-07-18T11:25:17-04:00
[INFO] Final Memory: 7M/17M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project xbnjava: Failed to deploy artifacts: Could not transfer artifact com.github.aliteralmind:xbnjava:pom:0.1.2 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, 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/MojoExecutionException

mvn deploy -e输出:

[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building XBN-Java 0.1.2
[INFO] ------------------------------------------------------------------------
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ xbnjava ---
[INFO] --- build-helper-maven-plugin:1.8:attach-artifact (attach-artifacts) @ xbnjava ---
[INFO] --- maven-install-plugin:2.4:install (default-install) @ xbnjava ---
[INFO] Installing R:\jeffy\programming\sandbox\z__for_git_commit_only\xbnjava\pom.xml to C:\Users\jeffy\.m2\repository\com\github\aliteralmind\xbnjava\0.1.2\xbnjava-0.1.2.pom
[INFO] Installing R:\jeffy\programming\build\xbnjava-0.1.2\download\xbnjava-0.1.2-all.jar to C:\Users\jeffy\.m2\repository\com\github\aliteralmind\xbnjava\0.1.2\xbnjava-0.1.2.jar
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ xbnjava ---
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom
2/6 KB
4/6 KB
6/6 KB

(失败部分:)

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.492 s
[INFO] Finished at: 2014-07-18T11:25:37-04:00
[INFO] Final Memory: 7M/17M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project xbnjava: Failed to deploy artifacts: Could not transfer artifact com.github.aliteralmind:xbnjava:pom:0.1.2 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project xbnjava: Failed to deploy artifacts: Could not transfer artifact com.github.aliteralmind:xbnjava:pom:0.1.2 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, ReasonPhrase: Unauthorized.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to deploy artifacts: Could not transfer artifact com.github.aliteralmind:xbnjava:pom:0.1.2 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, ReasonPhrase: Unauthorized.
at org.apache.maven.plugin.deploy.DeployMojo.execute(DeployMojo.java:193)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
Caused by: org.apache.maven.artifact.deployer.ArtifactDeploymentException: Failed to deploy artifacts: Could not transfer artifact com.github.aliteralmind:xbnjava:pom:0.1.2 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, ReasonPhrase: Unauthorized.
at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:143)
at org.apache.maven.plugin.deploy.AbstractDeployMojo.deploy(AbstractDeployMojo.java:167)
at org.apache.maven.plugin.deploy.DeployMojo.execute(DeployMojo.java:149)
... 21 more
Caused by: org.eclipse.aether.deployment.DeploymentException: Failed to deploy artifacts: Could not transfer artifact com.github.aliteralmind:xbnjava:pom:0.1.2 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, ReasonPhrase: Unauthorized.
at org.eclipse.aether.internal.impl.DefaultDeployer.deploy(DefaultDeployer.java:337)
at org.eclipse.aether.internal.impl.DefaultDeployer.deploy(DefaultDeployer.java:268)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.deploy(DefaultRepositorySystem.java:413)
at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:139)
... 23 more
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.github.aliteralmind:xbnjava:pom:0.1.2 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, ReasonPhrase: Unauthorized.
at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$6.wrap(WagonRepositoryConnector.java:1016)
at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$6.wrap(WagonRepositoryConnector.java:1004)
at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$PutTask.run(WagonRepositoryConnector.java:895)
at org.eclipse.aether.connector.wagon.WagonRepositoryConnector.put(WagonRepositoryConnector.java:522)
at org.eclipse.aether.internal.impl.DefaultDeployer.deploy(DefaultDeployer.java:331)
... 26 more
Caused by: org.apache.maven.wagon.TransferFailedException: Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.2/xbnjava-0.1.2.pom. Return code is: 401, ReasonPhrase: Unauthorized.
at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:573)
at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:493)
at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:474)
at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:454)
at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$PutTask.run(WagonRepositoryConnector.java:871)
... 28 more
[ERROR]
[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/MojoExecutionException
273420 次浏览

就像 aliteralmind 说的那样,在 setings.xml 中修改:

  <server>
<id>nexus-snapshots</id>
<username>MY_SONATYPE_DOT_COM_USERNAME</username>
<password>MY_SONATYPE_DOT_COM_PASSWORD</password>
</server>

您可能需要从 sonatype. com 获取用户名/密码。

我在尝试将 Gradle 工件部署到 NexusSonatype 存储库时也犯过类似的错误。如果您提供了错误的凭据(密码等) ,您将得到一个401未授权错误。如果你试图发布一些东西到一个发布库 并且该版本已经存在于存储库中。,你也会得到一个错误(我的第一个想法也是401)。所以你可能会发现,通过命令行发布它是可行的,但是当你从一个脚本发布的时候,它就会失败(因为它在第一次发布的时候并不存在于存储库中)。要么使用不同的版本号发布,要么删除服务器上的旧工件并重新发布。

SNAPSHOTS 存储库(与发行版存储库相反)允许您覆盖编号相似的版本,但是您的版本号应该在它的末尾有“-SNAPSHOT”。

正如@John 的回答中所说的,事实上已经有了一个 0.1.2-SNAPSHOT,干扰了我的新的非 SNAPSHOT 版本 0.1.2。由于 401 Unauthorized错误模糊不清且没有帮助——通常与用户/传递问题相关联——所以我无法自己解决这个问题也就不足为奇了。

将版本更改为 0.1.3使我回到了最初的错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-install) on project xbnjava: Failed to install artifact com.github.aliteralmind:xbnjava:jar:0.1.3: R:\jeffy\programming\build\xbnjava-0.1.3\download\xbnjava-0.1.3-all.jar (The system cannot find the path specified) -> [Help 1].

一个 Sonatype 支持人员还建议我从 POM 中删除 <parent>块(它之所以存在是因为它在 Ez-Vcard 的那个中,这是我开始使用的) ,并用

<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
and then make sure that lines up with what's in your settings.xml:
<settings>
<servers>
<server>
<id>ossrh</id>
<username>your-jira-id</username>
<password>your-jira-pwd</password>
</server>
</servers>
</settings>

在这样做之后,运行 mvn deploy实际上第一次上传了我的一个罐子! ! !

产出:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building XBN-Java 0.1.3
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- build-helper-maven-plugin:1.8:attach-artifact (attach-artifacts) @ xbnjava ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ xbnjava ---
[INFO] Installing R:\jeffy\programming\sandbox\z__for_git_commit_only\xbnjava\pom.xml to C:\Users\jeffy\.m2\repository\com\github\aliteralmind\xbnjava\0.1.3\xbnjava-0.1.3.pom
[INFO] Installing R:\jeffy\programming\build\xbnjava-0.1.3\download\xbnjava-0.1.3.jar to C:\Users\jeffy\.m2\repository\com\github\aliteralmind\xbnjava\0.1.3\xbnjava-0.1.3.jar
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ xbnjava ---
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.3/xbnjava-0.1.3.pom
2/6 KB
4/6 KB
6/6 KB


Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.3/xbnjava-0.1.3.pom (6 KB at 4.6 KB/sec)
Downloading: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/maven-metadata.xml
310/310 B


Downloaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/maven-metadata.xml (310 B at 1.6 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/maven-metadata.xml
310/310 B


Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/maven-metadata.xml (310 B at 1.4 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.3/xbnjava-0.1.3.jar
2/630 KB
4/630 KB
6/630 KB
8/630 KB
10/630 KB
12/630 KB
14/630 KB
...
618/630 KB
620/630 KB
622/630 KB
624/630 KB
626/630 KB
628/630 KB
630/630 KB

(成功部分:)

Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/aliteralmind/xbnjava/0.1.3/xbnjava-0.1.3.jar (630 KB at 474.7 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.632 s
[INFO] Finished at: 2014-07-18T15:09:25-04:00
[INFO] Final Memory: 6M/19M
[INFO] ------------------------------------------------------------------------

下面是最新的 POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.aliteralmind</groupId>
<artifactId>xbnjava</artifactId>
<packaging>pom</packaging>
<version>0.1.3</version>
<name>XBN-Java</name>
<url>https://github.com/aliteralmind/xbnjava</url>
<inceptionYear>2014</inceptionYear>
<organization>
<name>Jeff Epstein</name>
</organization>
<description>XBN-Java is a collection of generically-useful backend (server side, non-GUI) programming utilities, featuring RegexReplacer and FilteredLineIterator. XBN-Java is the foundation of Codelet (http://codelet.aliteralmind.com).</description>


<licenses>
<license>
<name>Lesser General Public License (LGPL) version 3.0</name>
<url>https://www.gnu.org/licenses/lgpl-3.0.txt</url>
</license>
<license>
<name>Apache Software License (ASL) version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>


<developers>
<developer>
<name>Jeff Epstein</name>
<email>aliteralmind-github@yahoo.com</email>
<roles>
<role>Lead Developer</role>
</roles>
</developer>
</developers>


<issueManagement>
<system>GitHub Issue Tracker</system>
<url>https://github.com/aliteralmind/xbnjava/issues</url>
</issueManagement>


<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>


<scm>
<connection>scm:git:git@github.com:aliteralmind/xbnjava.git</connection>
<url>scm:git:git@github.com:aliteralmind/xbnjava.git</url>
<developerConnection>scm:git:git@github.com:aliteralmind/xbnjava.git</developerConnection>
</scm>


<properties>
<java.version>1.7</java.version>
<jarprefix>R:\jeffy\programming\build\/${project.artifactId}-${project.version}/download/${project.artifactId}-${project.version}</jarprefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${jarprefix}.jar</file>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>


<profiles>
<!--
This profile will sign the JAR file, sources file, and javadocs file using the GPG key on the local machine.
See: https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
-->
<profile>
<id>release-sign-artifacts</id>
<activation>
<property>
<name>release</name>
<value>true</value>
</property>
</activation>
</profile>
</profiles>
</project>

这是 Maven 的一个大问题,还有627个要解决。

我也犯了同样的错误。我反复检查了所有东西。我太专注于堆栈跟踪了,以至于没有读到反应堆摘要和堆栈跟踪之前构建的最后几行:

[DEBUG] Using connector AetherRepositoryConnector with priority 3.4028235E38 for http://www:8081/nexus/content/repositories/snapshots/
[INFO] Downloading: http://www:8081/nexus/content/repositories/snapshots/com/wdsuite/com.wdsuite.server.product/1.0.0-SNAPSHOT/maven-metadata.xml
[DEBUG] Could not find metadata com.group:artifact.product:version-SNAPSHOT/maven-metadata.xml in nexus (http://www:8081/nexus/content/repositories/snapshots/)
[DEBUG] Writing tracking file /home/me/.m2/repository/com/group/project/version-SNAPSHOT/resolver-status.properties
[INFO] Uploading: http://www:8081/nexus/content/repositories/snapshots/com/...-1.0.0-20141118.124526-1.zip
[INFO] Uploading: http://www:8081/nexus/content/repositories/snapshots/com/...-1.0.0-20141118.124526-1.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:

这是关键: “找不到元数据”。虽然它说这是一个身份验证错误,但实际上在连接存储库中执行“重建元数据”时修复了这个错误。

希望能有帮助。

我们最近遇到过这个问题,发现它与我们使用的 Maven 版本有关。我们使用的是3.1.0,无法上传到 nexus,我们不断得到401的,我们恢复到3.0.3,问题消失了。

确认的最简单方法是使用 maven 版本,并在项目上运行“ mvn 部署”。

详情请浏览这里: https://issues.apache.org/jira/browse/WAGON-421

有些用户可能错误地输入了电子邮件地址而不是用户名。当电子邮件地址中的名称与用户名称相同时,这种情况可能无意识地发生。

我在 setings.xml 中放入了一个未加密的密码。

我用卷曲来测试电话

curl -u username:password http://url/artifactory/libs-snapshot-local/com/myproject/api/1.0-SNAPSHOT/api-1.0-20160128.114425-1.jar --request PUT --data target/api-1.0-SNAPSHOT.jar

我得到了一个错误:

{
"errors" : [ {
"status" : 401,
"message" : "Artifactory configured to accept only encrypted passwords but received a clear text password."
} ]
}

我恢复了我的加密密码点击我的人工配置文件,并解锁它。

这是来自音响连接小组关于 未经授权的官方解释

我建议你阅读 工件部署失败故障排除以获得更多信息。

代码401未经授权

请求中没有发送任何登录凭据,也没有发送登录凭据 已发送无效的凭据 NexusUI 中的系统提要可以帮助缩小这个范围 如果发送了凭据,那么在提要中会有一个条目。

如果没有发送任何凭据,这可能是由于 在你的诗歌的分配管理部分的 ID 和你的 Xml 保存登录凭据的服务器部分。

还有 Nexus 的401。在尝试了以上所有的建议和更多的建议后,我最终发现是詹金斯的设置出错了。

在失败项目的 Jenkins 配置中,我们在“ Post Build”操作中有一个题为“ Deploy Artifact To Maven Repository”的部分。这里有一个‘ Repository ID’字段,它被设置成了错误的值。它必须与 setings.xml 中的存储库 ID 相同,以便 Jenkins 读取用户和密码字段:

Jenkins Project Configuration

 <servers>
<server>
<id>snapshot-repository</id>  <!-- must match this -->
<username>deployment</username>
<password>password</password>
</server>
</servers>

出现此错误的原因之一是没有指定或指定错误。如前所述,它应该与 setings.xml 中的部分相同。 一些提示... 用-e-X 选项运行 mvn 并检查调试输出。它将告诉您它使用的是哪个 RepositoryId:

[DEBUG]   (f) offline = false
[DEBUG]   (f) packaging = exe
[DEBUG]   (f) pomFile = c:\temp\build-test\pom.xml
[DEBUG]   (f) project = MavenProject: org.apache.maven:standalone-pom:1 @
[DEBUG]   (f) repositoryId = remote-repository
[DEBUG]   (f) repositoryLayout = default
[DEBUG]   (f) retryFailedDeploymentCount = 1
[DEBUG]   (f) uniqueVersion = true
[DEBUG]   (f) updateReleaseInfo = false
[DEBUG]   (f) url = https://nexus.url.blah.com/...
[DEBUG]   (f) version = 13.1
[DEBUG] -- end configuration --

在这种情况下,它使用默认值“ remote-itory”,这意味着出了问题。

显然,我已经指定了-DrepositoryID (注意大写 ID)而不是-DrepositoryId。

另外,在您更新了存储库 ID 之后,请确保您的运行是干净的,因为 release:prepare将从中断的地方继续运行。所以你可以这样做:

mvn release:prepare -Dresume=false

mvn release:clean release:prepare

在 windows 中有两个 seting.xml。

  • %MAVEN_HOME%\conf\
  • %userprofile%\.m2\

如果 %userprofile%\.m2\setting.xml生效,Maven 将不访问 %MAVEN_HOME%\conf\setting.xml

在我的例子中,在加密密码之后,我忘记将 settings-security.xml放入 ~/. m2。

我正在处理这个运行的 ArtiFactory 5.8.4版本。“ Set Me Up”函数将生成 setings.xml,如下所示:

<servers>
<server>
<username>${security.getCurrentUsername()}</username>
<password>${security.getEscapedEncryptedPassword()!"AP56eMPz8L12T5u4J6rWdqWqyhQ"}</password>
<id>central</id>
</server>
<server>
<username>${security.getCurrentUsername()}</username>
<password>${security.getEscapedEncryptedPassword()!"AP56eMPz8L12T5u4J6rWdqWqyhQ"}</password>
<id>snapshots</id>
</server>
</servers>

在使用 mvn department-e-X 开关之后,我注意到凭据不准确。我删除了 ${ security.getCurrentUsername ()},并将其替换为我的用户名,并删除了 ${ security.getEscapedEncryptedPassword () ! “”},只是把我的加密密码,这对我来说是有效的:

<servers>
<server>
<username>username</username>
<password>AP56eMPz8L12T5u4J6rWdqWqyhQ</password>
<id>central</id>
</server>
<server>
<username>username</username>
<password>AP56eMPz8L12T5u4J6rWdqWqyhQ</password>
<id>snapshots</id>
</server>
</servers>

希望这个能帮上忙!

它可能是由于错误的版本,你可以双重检查的 父母的版本Lib 的版本,以确保他们是正确的,没有重复,我已经经历了同样的问题

在 Nexus 版本3.13.0-01中,POM 的 distributionManagement/repository部分中的 id必须与 maven setings.xml 中的 servers/server/idmirrors/mirror/id匹配。我只是替换了 nexus v3.10.4(用3.13.0-01) ,并且不需要匹配3.10.4。

遇到了类似的问题。必须将 maven 部署插件固定到 pom.xml 中的特定版本:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>

这个版本打破了我的构建:

[INFO] --- maven-deploy-plugin:3.0.0-M1:deploy (default-cli) @ dbl ---

当使用 mvn gpg:sign-and-deploy-file命令时,我得到了 401错误,原因是

//<maven_home>/conf/settings.xml
//To get `<maven_home>` run `mvn --version`
//for example


/usr/local/Cellar/maven/3.6.3_1/libexec/conf/settings.xml

不包括 <server></server>标签主体,你可以通过

LogIn to Sonatype -> Profile -> User Token -> Access User Token
//https://oss.sonatype.org/#profile;User%20Token


//it will generate something like
<server>
<id>${server}</id>
<username>{name}</username>
<password>{pass}</password>
</server>


//where `${server}` is the same as `-DrepositoryId` parameter in `mvn gpg:sign-and-deploy-file` command


在我的例子中,我从设置中删除了 Central 的服务器登录凭据。

    <server>
<id>central</id>
<username>admin</username>
<password>******</password>
</server>


<mirror>
<id>central</id>
<mirrorOf>central</mirrorOf>
<name>maven-central</name>
<url>http://www.localhost:8081/repository/maven-central/</url>
</mirror>

我不知道我为什么这么做,但这完全是错误的,因为中央 Maven 回购可以匿名访问。查看导致我的错误识别和解决方案的调试输出。

[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for http://www.localhost:8081/repository/maven-central/ with username=admin, password=***

在尝试部署到 ArtiFactory 存储库时,我得到了同样的错误,下面的代码为我解决了这个问题:

转到工厂中的存储库设置,并启用点“ 强力玛文认证”和401“未授权”错误应该消失。 (当然,您需要在 setings.xml 文件 最好是纯文本,以防止问题中提供您的凭据)

我猜在默认情况下,即使您在 setings.xml 文件中提供了正确的凭据,也不会使用这些凭据,并且会得到未授权异常。

面临同样的问题。在我的案例中,原因是相当愚蠢的——我用于授权的 github 令牌是为那些不拥有我试图发布的回购的组织颁发的。查查回购所有权和所有权。

如果您像我一样,从 eclipse 的 maven run 配置中运行 maven 编译部署,那么这个问题可能与 Eclipse 自己的嵌入式 maven 有关,如 https://bugs.eclipse.org/bugs/show_bug.cgi?id=562847所述

解决方案是从 CLI (例如 bash)运行 mvn 编译部署, 或者不在 Eclipse 的 maven run 配置中使用嵌入式 maven,并添加一个外部 maven (我的在/usr/share/mvn 中) ,瞧,它会说 BUILD SUCCESS。

中删除所有项目。M2文件夹。然后运行 干净包装下载所有的库。进入 Eclipse 使用 maven 更新。这招对我很管用。

可以从在命令行中键入 mvn clean install开始尝试。如果您发现由于身份验证错误401而无法将工件传输到本地机器,那么您可能没有使用正确的 setings.xml 进行身份验证。

你可以试试 mvn clean install -s <path to you settings.xml>

在我的例子中,我在项目的根文件夹中放置了 setings.xml,所以我运行了 mvn clean install -s ./settings.xml,它开始成功地下载我的项目所依赖的工件。

在尝试了所有这些解决方案之后,我还是遇到了同样的问题,直到我检查了 Setings.xml文件

确保 Setings.xml文件是 . xml扩展名 NOT < strong > . xml.txt 那是因为我创建了这个文件,就像我创建任何记事本文件一样。

 C:\Users\muham> cd .m2
C:\Users\muham\.m2> ls

我找到了这个输出

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         5/10/2022   1:27 PM                repository
-a----         5/10/2022   1:31 PM            177 settings.xml.txt

这意味着我的 Setings.xml文件扩展名是 短信

我将其扩展名更改为. xml

C:\Users\muham\.m2> mv settings.xml.txt settings.xml

输出

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         5/10/2022   1:27 PM                repository
-a----         5/10/2022   1:31 PM            177 settings.xml

现在您可以进行测试,希望这个错误将会消失

在我的例子中,我需要在 Eclipse 中安装 Meven,因为默认情况下使用最新版本。

转到 Windows-> Preferences-> Maven-> Installations-> add-> Directory

添加我的 Maven 版本: C: apache-Maven-3.6.2

然后在 运行 Configurations-> Maven build

目标: 部署

用户设置: C: apache-maven-3.6.2 conf setings.xml

在 Windows 中,在 C: apache-maven-3.6.2 conf setings.xml 中,我设置了对 Nexus 服务器的访问:

<servers>
<server>
<id>nexus</id>
<username>aaaaaa</username>
<password>bbbbbbb</password>
</server>
</servers>

最后按 快跑

当在自动化 CI/CD 管道中运行临时过程(例如通过 GitLab)时,检查 Settings-> CI/CD 中的用户名和密码变量是否设置正确。

如果勾选了「保护变数」 ,请检查分支是否也受到保护。否则,会出现 401 Unauthorized错误。

在我的例子中,在 distributionManagement标记的 pom 中有一个不正确的 id。

<repositories>
...
<repository>
<id>correctId</id>
<url>https://pkgs.dev.azure.com/user/_packaging/user/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>


<distributionManagement>
<repository>
<id>correctId</id>
<url>https://pkgs.dev.azure.com/user/_packaging/user/maven/v1</url>
<name>correctId</name>
</repository>
</distributionManagement>

还有。中的 seting.xml 中有正确的标记。服务器标记中的 m2文件夹。正确配置 IDE 的 maven (以获取此配置)

<server>
<id>correctId</id>
<username>correctId</username>
<password>secretToken</password>
</server>

我在使用 M2Eclipse 将错误401部署到 Nexus3时,找到了根本原因。

问题是 M2Eclipse 试图并行部署 Nexus 不允许的构件。你可以在 这篇文章中找到更多的细节。

作为解决方案,您可以使用命令行 maven 安装进行部署。