为什么我在Maven中遇到“401 Unauthorized”错误?
为什么我在Maven中遇到“401 Unauthorized”错误?
以下是调用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发送了错误的login凭证,或根本没有凭证。”
下面是我采取的步骤,下面是我的完整的settings.xml
和pom.xml
文件,下面是mvn deploy
和mvn deploy -e
的完整日志。
任何想法,将不胜感激。 我只是用Maven在墙上打墙。
当我收到401错误时,我跟随了sonatype的清单 :
清单项目1 。 通过login到Nexus UI确保您的用户名/密码是正确的。 如果curl安装在您的机器上,您可以尝试使用…部署工件
- 我成功login和退出了sonatype.org网站,使用user / pass在
settings.xml
。 - 我试图用
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 。 如果没有错误输出,请确保您的用户权限在服务器上正确configuration。 确保删除刚刚创build的回购。
我不知道“下降”是什么意思。 我相信我的权限已正确安装,因为我从sonatype收到此消息:
- configuration已经准备好了,现在你可以:
- 将快照构件部署到存储库https://oss.sonatype.org/content/repositories/snapshots
- 将发布工件部署到分段存储库中https://oss.sonatype.org/service/local/staging/deploy/maven2
- 将分阶段的工件推入存储库“发布”
- 从组https://oss.sonatype.org/content/groups/public下载快照并发布工件
- 从暂存组https://oss.sonatype.org/content/groups/staging下载快照,发布和暂存的工件
而且我过去几天已经通过mvn deploy
将这些项目成功地放到了服务器上。
该项目的设置:
清单项目3 。 确保你已经在
settings.xml
configuration了一个服务器,并且服务器ID和pom.xml中的分发仓库ID是一样的。
- 在
settings.xml
,settings / servers / server / id等于ossrh
- 在
pom.xml
,distributionManagement / snapshotRepository / id等于ossrh
(完整的文件在底部)
清单项目4 。 确保你的settings.xml位置正确(通常是_〜/ .m2 / settings.xml)。 你可以通过运行mvn help:effective-settings来检查。
根据Maven的设置参考 ,settings.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_HOME
是C:\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 。 如果服务器使用的是https,但您的POM中的URL是http,那么您也可能获得401。
我不明白它指的是哪个url。
清单项目6 。 使用最新版本的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.xml
和pom.xml
文件
(完整日志mvn deploy
和mvn deploy -e
下面)
settings.xml
:
<?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>
pom.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 deploy
和mvn 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
在尝试将Gradle artefact部署到Nexus Sonatype存储库时,我遇到了类似的错误。 如果您提供了错误的凭据(密码等),您将收到401 Unauthorized错误。 如果您尝试将某些内容发布到某个版本库并且该版本已经存在于该版本库中,您也会收到一个错误(而且我的头顶也是一个401) 。 所以你可能会发现,通过从命令行发布它是可行的,但是当你从脚本中执行它时,它会失败(因为它第一次在版本库中不存在)。 可以使用不同的版本号进行发布,也可以删除服务器上的旧文件并重新发布。
SNAPSHOTS存储库(而不是版本库)允许您覆盖相同编号的版本,但版本号的末尾应该有“-SNAPSHOT”。
我已经把一个没有encryption的密码在settings.xml中。
我用curltesting了这个电话
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." } ] }
我检索我的encryption密码点击我的artifactoryconfiguration文件,并解锁它。
只是在settings.xml中改变这些aliteralmind说:
<username>MY_SONATYPE_DOT_COM_USERNAME</username> <password>MY_SONATYPE_DOT_COM_PASSWORD</password>
您可能需要从sonatype dot com获取用户名/密码。
导致此错误的原因之一是未指定repositoryId或未正确指定。 正如已经提到的,它应该和settings.xml中的section一样。 几个提示…用-e -X选项运行mvn并检查debugging输出。 它会告诉你它正在使用哪个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-repository”,这意味着出错了。
显然我已经指定了-DrepositoryID(注意大写的ID)而不是-DrepositoryId。
有些用户可能错误地input了电子邮件地址而不是用户名。 当电子邮件地址中的名称与用户名相同时,这可能会无意识地发生。
正如@约翰的回答所述,事实上已经有一个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支持人员还build议我从我的POM中删除<parent>
块(它只在那里,因为它在ez-vcard中 ,这是我开始的),并用我的<distributionManagement>
块replace
<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
实际上第一次上传我的jar子之一!
输出:
[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多去。
最近我们遇到了这个问题,并发现这个问题与我们使用的Maven版本有关。 我们使用3.1.0,无法上传到nexus,我们一直在得到401的,我们恢复到3.0.3,问题就消失了。
最简单的方法来确认是通过maven版本,并在您的项目上运行“mvn部署”。
更多细节可以在这里find: https : //issues.apache.org/jira/browse/WAGON-421
这是sonatype nexus团队关于401的官方解释– 未经授权
我build议您阅读故障排除工件部署失败以获取更多信息。
代码401 – 未经授权
请求没有发送任何login凭证,或发送了无效的login凭证。 在Nexus UI中检查“授权和身份validation”系统提要可以帮助缩小这个范围。 如果发送凭证,则会在Feed中有一个条目。
如果没有发送凭证,这可能是由于您的pom的distributionManagement部分中的id与保存login凭证的settings.xml的服务器部分之间的不匹配。
我有同样的错误。 我试过并重新检查了一切。 我非常专注于堆栈跟踪,因此我没有在反应堆摘要和堆栈跟踪之前读取构build的最后几行:
[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:
这是关键: “找不到元数据” 。 虽然它说这是一个authentication错误,但实际上它已经修复了在nexus存储库中执行“重build元数据”的问题。
希望能帮助到你。
也有从Nexus的401。 在尝试了上述所有build议之后,我终于发现这是一个Jenkins的错误。
在失败项目的Jenkinsconfiguration中,我们在“Post Build”操作中有一个标题为“将工件部署到Maven仓库”的部分。 这有一个“存储库ID”字段被设置为错误的值。 它必须与settings.xml中的存储库ID相同,以便Jenkins读取用户和密码字段:
<servers> <server> <id>snapshot-repository</id> <!-- must match this --> <username>deployment</username> <password>password</password> </server> </servers>