Получение кода ошибки 401 при выпуске: выполнить из моей сборки maven

Я получаю сообщение об ошибке при попытке выпустить новую версию программного обеспечения для Sonatype. Я успешно выполнил mvn release:prepare, но когда я делаю mvn release:perform, я получаю следующую ошибку:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:52.660s
[INFO] Finished at: Fri Feb 14 22:32:52 EST 2014
[INFO] Final Memory: 28M/263M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project flexjson: Failed to deploy artifacts: Could not transfer artifact net.sf.flexjson:flexjson:jar:3.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/net/sf/flexjson/flexjson/3.2/flexjson-3.2.jar. 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
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:00.122s
[INFO] Finished at: Fri Feb 14 22:32:52 EST 2014
[INFO] Final Memory: 14M/184M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:perform (default-cli) on project flexjson: Maven execution failed, exit code: '1' -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal   org.apache.maven.plugins:maven-release-plugin:2.0:perform (default-cli) on project flexjson:   Maven execution failed, exit code: '1'
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:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
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: Maven execution failed, exit code: '1'
at org.apache.maven.plugins.release.PerformReleaseMojo.execute(PerformReleaseMojo.java:135)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
Caused by: org.apache.maven.shared.release.ReleaseExecutionException: Maven execution failed, exit code: '1'
at org.apache.maven.shared.release.phase.AbstractRunGoalsPhase.execute(AbstractRunGoalsPhase.java:90)
at org.apache.maven.shared.release.phase.RunPerformGoalsPhase.execute(RunPerformGoalsPhase.java:67)
at org.apache.maven.shared.release.DefaultReleaseManager.perform(DefaultReleaseManager.java:343)
at org.apache.maven.shared.release.DefaultReleaseManager.perform(DefaultReleaseManager.java:289)
at org.apache.maven.shared.release.DefaultReleaseManager.perform(DefaultReleaseManager.java:269)
at org.apache.maven.plugins.release.PerformReleaseMojo.execute(PerformReleaseMojo.java:131)
... 21 more
Caused by: org.apache.maven.shared.release.exec.MavenExecutorException: Maven execution failed, exit code: '1'
at org.apache.maven.shared.release.exec.ForkedMavenExecutor.executeGoals(ForkedMavenExecutor.java:122)
at org.apache.maven.shared.release.exec.AbstractMavenExecutor.executeGoals(AbstractMavenExecutor.java:47)
at org.apache.maven.shared.release.exec.ForkedMavenExecutor.executeGoals(ForkedMavenExecutor.java:144)
at org.apache.maven.shared.release.phase.AbstractRunGoalsPhase.execute(AbstractRunGoalsPhase.java:82)
... 26 more

Я нашел запись в блоге об ошибке, но не вижу ничего, что соответствовало бы моей настройке.

http://blog.sonatype.com/2010/11/what-to-do-when-nexus-returns-401/#.Uv7EYEKwJUI

Сообщение относится к файлу настроек, не соответствующему тому, что настроено в файле pom. Но у меня нет ничего в pom о развертывании. У меня нет настроенного плагина, поэтому он, должно быть, использовал конфигурацию плагина по умолчанию для выпуска релизов. Насколько я понимаю, это плагин для выпуска maven.

Эта настройка работала в прошлом, но я делаю это с другой машины. Мне пришлось сгенерировать новый закрытый ключ gpg после этого сообщения:

http://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/#.Uv2JUkKwJUI

Эта настройка работала раньше, но я перешел на новую машину. Я обязательно скопировал файл .m2/settings.xml в свой ~/.m2/settings.xml. Конечно, этот закрытый ключ отличается от того, что был на моей старой машине. Но я не могу понять, почему это важно или имеет ли это значение. Из того, что я читал, это только для подписи кода. Не уверен, как это разрешает подписание кода.

Итак, что мне не хватает? Почему эта ошибка 401 продолжает происходить?


person chubbsondubs    schedule 16.02.2014    source источник


Ответы (4)


[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (развертывание по умолчанию) в проекте flexjson: не удалось развернуть артефакты: не удалось передать артефакт net.sf.flexjson:flexjson: jar:3.2 из/в sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): не удалось передать файл: https://oss.sonatype.org/service/local/staging/deploy/maven2/net/sf/flexjson/flexjson/3.2/flexjson-3.2.jar. Код возврата: 401, ReasonPhrase: Несанкционировано. -> [Помощь 1]

перегенерируйте свой мастер-пароль maven и зашифруйте свой пароль для своего репозитория nexus и настройте его в своем ~/.m2 settings.xml

person jmj    schedule 16.02.2014
comment
Это более-менее сработало. Я не мог вспомнить свой мастер-пароль, но я, наконец, понял его. - person chubbsondubs; 16.02.2014

Следуйте советам в первой ссылке. 401 означает сбой аутентификации на сервере. Вы заявляете, что в вашем POM ничего не настроено для поддержки развертывания. Если это работало ранее, это не может быть правильным. Есть ли в вашем POM раздел управления распространением?

  <distributionManagement>
    <repository>
      <id>nexus-release</id>
      <name>My Nexus release area</name>
      <url>https://????????</url>
    </repository>
  </distributionManagement>

Раздел идентификатора должен соответствовать идентификатору раздела «серверы» в вашем файле настроек Maven.

<server>
  <id>nexus-release</id>
  <username>mark</username>
  <password>mycleartextpasswordconsiderusingmavenbuiltinencryption</password>
</server>

Это «загвоздка» и иллюстрирует, как Maven связывает целевое репо с учетными данными аутентификации пользователя.

Наконец, чтобы моя сборка использовала правильный файл настроек, я всегда передаю его в качестве параметра при сборке:

mvn -s ~/.m2/settings.xml ....

Этот подход также позволяет использовать разные файлы настроек для разных проектов.

Примечание

  • Вторая ссылка не имеет отношения. Он касается подписи артефакта, который вы публикуете (чтобы другие поверили, что он исходит от вас).
person Mark O'Connor    schedule 16.02.2014
comment
Правильно нет раздела управления дистрибутивом, а он рабочий. Я успешно развернул его прошлой ночью. Моя проблема заключалась в том, что я забыл скопировать файл settings-security.xml с мастер-паролем. - person chubbsondubs; 16.02.2014
comment
он работает без этого раздела, но использует идентификатор репозитория по умолчанию sonatype-nexus-staging - person Daniel Widdis; 03.09.2015

Как и в случае с OP, у меня нет раздела «Управление распределением» в моем файле pom.xml, поэтому я получил эту ошибку, не зная, что добавить в файл настроек Maven.

В приведенном выше сообщении об ошибке показано имя репозитория по умолчанию sonatype-nexus-staging, используемое в подключаемом модуле выпуска maven. Это то, что должно соответствовать логину/паролю (зашифрованному или нет) в settings.xml.

person Daniel Widdis    schedule 03.09.2015

Храните все файлы настроек как в папке %M2_HOME/conf, так и в папке ~/.m2/.

Тогда вы не получите это сообщение об ошибке.

person Tarul Kinra    schedule 05.05.2016