Чому я отримую помилку "401 Несанкціонована" в Мевені?


115

Чому я отримую помилку "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]

Відповідно до цієї сторінки підтримки сонатипу :

"Якщо ви отримуєте номер 401, це тому, що Maven надсилає неправильні облікові дані для входу, або взагалі відсутні облікові дані."

Нижче наведено кроки, які я зробив, нижче - мої файли settings.xmlта pom.xmlфайли, а нижче - повні журнали з mvn deployта mvn deploy -e.

Будь-які ідеї будуть вдячні. Я просто б'юсь за стіну за стіною з Мейвен.


Я дотримувався контрольного списку sonatype при отриманні помилки 401:

Пункт 1 контрольного списку . Переконайтесь, що ваше ім’я користувача / пароль правильні, увійшовши в інтерфейс Nexus. Якщо curl встановлений на вашій машині, ви можете спробувати розгорнути артефакт за допомогою ...

  • Я успішно входив і виходив із веб-сайту sonatype.org, використовуючи користувача / вхід 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 контрольного списку . Якщо виводу помилок немає, переконайтеся, що ваші користувацькі привілеї правильно налаштовані на сервері. Не забудьте скинути щойно створене репо.

Я не знаю, що означає "крапля". Я вважаю, що мої привілеї встановлені належним чином, коли я отримав це повідомлення від сонатипу:

і я вже успішно помістити ці елементи на сервер через mvn deployпротягом останніх кількох днів.

Налаштування проекту:

налаштування проекту

Пункт 3 контрольного списку . Переконайтеся, що ви налаштували сервер settings.xmlі чи ідентифікатор сервера ідентичний ідентифікатору сховища дистрибутива у pom.xml.

  • У settings.xmlналаштуваннях / серверах / сервері / id дорівнюєossrh
  • В pom.xml, розподілManagement / snapshotRepository / id дорівнюєossrh

(повні файли знаходяться внизу)

Пункт 4 контрольного списку . Переконайтесь, що налаштування.xml знаходиться у правильному місці (зазвичай це _ ~ / .m2 / settings.xml). Ви можете перевірити це, застосувавши mvn help: ефективні налаштування.

Відповідно до посилань на налаштування 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, але URL у вашому POM є 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

FYI: Замісники "MY_USERNAME" / "PASSWORD" містяться лише в цьому питанні. Я використовую свого реального користувача / проходу під час входу та у файлі реальних налаштувань.
aliteralmind

1
пункт 3: необхідність того, щоб ідентифікатор сервера відповідав ідентифікатору репозиторію - це гайка, але, на жаль, саме так воно працює, ваша відповідь дуже допомогла, дякую!
Сомал Сомальський

Відповіді:


51

У мене були подібні помилки при спробі розгортання артефакту Gradle до сховища Nexus Sonatype. Ви отримаєте помилку 401 від несанкціонованого доступу, якщо надасте неправильні облікові дані (пароль тощо). Ви також отримаєте помилку (а вгорі голови також 401), якщо ви спробуєте щось опублікувати у сховищі випусків, і ця версія вже є у сховищі. Таким чином, ви можете виявити, що, публікуючи з командного рядка, він працює, але тоді, коли ви робите це зі сценарію, він не спрацьовує (тому що він не існував у сховищі вперше). Або опублікуйте, використовуючи інший номер версії, або видаліть старий артефакт на сервері та повторно опублікуйте.

Репозиторій SNAPSHOTS (на відміну від сховища випусків) дозволяє перезаписати аналогічно пронумеровану версію, але номер версії повинен мати "-SNAPSHOT" в кінці.


2
Неймовірно. Здається, що 0.1.2-SNAPSHOT, що вже створено, заважає моїй новій 0.1.2версії, як ви пропонуєте. Якщо змінити його на 0.1.0("раніше"), або 0.1.2a, або 0.1.3("пізніше") призводить до помилки, з якою я мав справу перед цією:
aliteralmind

[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]. Я не думав, що я вніс будь-які зміни, але очевидно усунути це -SNAPSHOTз версії було погано.
aliteralmind

46
Чому в СВІТІ повідомлення про помилку сказало б щось таке неясне і корисне, як "401 Несанкціоноване" ...
aliteralmind

2
двічі перевірте, чи відповідає ідентифікатор сховища, для якого ви налаштували свої облікові дані (у ваших налаштуваннях.xml або POM), схожий із сховищем, до якого ви хочете розгорнути. Просто наткнувся на це.
Грегор

У мене також була проблема, що вже була версія версії 1.3.0, коли я намагався опублікувати 1.2.0-SNAPSHOT ...
Marcello de Sales

12

Однією з причин цієї помилки є те, що репозиторійId не вказаний або вказаний неправильно. Як уже згадувалося, він повинен бути таким же, як у розділі в settings.xml. Пара підказок ... Запустіть mvn з параметрами -e -X і перевірте вихід налагодження. Він підкаже, який репозиторій він використовує:

[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 --

У цьому випадку воно використовує значення за замовчуванням "віддалений репозиторій", що означає, що щось пішло не так.

Мабуть, я вказав -DrepositoryID (ідентифікатор примітки з великого капіталу) замість -DrepositoryId.


Це вирішило це для мене, але я також виявив, що інші проекти в моєму робочому просторі не змогли знайти наші репо-релізи з унікальними назвами (вони шукатимуть артефакти в нашому центральному проксі). Ми використовуємо 2.5.3 плагіна випуску. Тому в моєму випадку settings.xmlя зробив обидва ідентифікатора репо-файлу знову однаковими (знімок та випуск), але потім я додав ще одну декларацію з унікальним ідентифікатором для нашого ж репо-версії (в основному псевдонім). Це дозволило проектам, для яких потрібна унікальна назва, і старіші проекти, які використовували однакові імена для посилання на них. Наш майстер-пом відноситься до ідентичного.
дан

9

просто змініть налаштування.xml, як пише aliteralmind:

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

вам, ймовірно, потрібно отримати ім’я користувача / пароль від sonatype dot com.



Працював і для мене!
Ігор Байбородін

Я також! Дуже дякую.
Джеймс Тейлор

8

Я поставив незашифрований пароль у settings.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."
  } ]
}

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


1
Підказка: для багатьох реалізацій завитків потрібні параметри, що мають бути перед URL-адресою. У цьому випадку використовуйте code curl -u username:password --request PUT --data target/api-1.0-SNAPSHOT.jar http://url/artifactory/libs-snapshot-local/com/myproject/api/1.0-SNAPSHOT/api-1.0-20160128.114425-1.jarзамість цього
TouDick

4

Також мав 401 з Nexus. Спробувавши всі пропозиції вище та більше без успіху, я врешті-решт виявив, що помилка налаштування Дженкінса.

У конфігурації Дженкінса для невдалого проекту ми маємо розділ у заходах "Опублікувати збірку" під назвою "Розгорнути артефакти в сховище Maven". Це поле "Ідентифікатор сховища", яке було встановлено на неправильне значення. Він повинен бути таким же, як ідентифікатор сховища в settings.xml для того, щоб Jenkins читав поля користувача та пароля:

Конфігурація проекту Дженкінса

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

3

Як зазначено у відповіді @ 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].

Особа, яка працює з підтримкою сонатипу, також рекомендувала видалити <parent>блок зі своєї POM (він є лише там, оскільки він знаходиться в одному з ez-vcard , з чого я почав) і замінити свій <distributionManagement>блок на

<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>

Ось одна велика проблема Мевена не вийшла з ладу. Ще лише 627.


2

Деякі користувачі, можливо, ввели електронну адресу замість імені користувача помилково. Це може статися несвідомо, коли ім'я в електронній адресі є таким же, як ім’я користувача.


Це вирішило проблему для мене за допомогою sonatype nexus 2.12. Мені довелося змінити адресу електронної пошти на лише ім’я користувача в моїх налаштуваннях.xml
spuder

2

Це офіційне пояснення від команди сонатипу Nexus близько 401 року - Несанкціоноване

Для отримання додаткової інформації рекомендую ознайомитись з усуненням несправностей з порушеннями розгортання артефакту .

Код 401 - Несанкціонований

Або не було надіслано облікових даних для входу із запитом, або невідомих облікових даних для входу. Перевірка системного каналу "авторизації та автентифікації" в інтерфейсі Nexus може допомогти зменшити цю функцію. Якщо надіслані облікові дані, у стрічці буде запис.

Якщо ніяких облікових даних не було надіслано, це, ймовірно, пов’язане з невідповідністю між ідентифікатором у розділі розповсюдження вашого управління Pom та розділом сервера settings.xml, який містить дані для входу.


2

у моєму випадку після шифрування пароля , я забув ввести settings-security.xml~ / .m2。


1

У нас виникла ця проблема зовсім недавно, і ми з'ясували, що це стосується версії Maven, яку ми використовували. Ми використовували 3.1.0 і не могли завантажувати Nexus. Ми продовжували отримувати 401, ми повернулися до версії 3.0.3, і проблема пішла.

Найпростіший спосіб підтвердити - це опрацювати версії maven і запустити "mvn розвернути" на своєму проекті.

Детальнішу інформацію можна знайти тут: https://isissue.apache.org/jira/browse/WAGON-421


1

Я мав справу з цією запущеною версією версії 5.8.4. Функція "Налаштувати мене" генерує settings.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 -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>

Сподіваюся, це допомагає!


Це здається, що у вас неправильно налаштовані значення в іншому місці, оскільки він повинен використовувати значення з об'єкта безпеки або повертатися до них як за замовчуванням. Але раді, що це спрацювало!
Rup

1

У Nexus версії 3.13.0-01 idв розділі POM distributionManagement/repositoryОБОВ'ЯЗКОВО відповідати servers/server/idта mirrors/mirror/idналаштуванням maven.xml. Щойно я замінив nexus v3.10.4 (з 3.13.0-01), і він не потребував відповідності 3.10.4.


1

Мав подібне питання. Довелося закріпити плагін розгортання 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 ---

Це допомогло. Протягом декількох днів обробляючи артефакти, якщо дозвіл було відкликано, то це з'ясували.
Картік Прасад

0

У мене була така ж помилка. Я спробував і все перевірив. Я був настільки зосереджений у сліді стека, що я не прочитав останні рядки збірки перед резюме Реактора та слідом стека:

[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:

Це було ключовим: "Не вдалося знайти метадані" . Хоча він сказав, що це помилка автентифікації, вона фактично виправлена, роблячи "відновлення метаданих" у сховищі Nexus.

Сподіваюся, це допомагає.


Я отримав те саме повідомлення про помилку "Не вдалося знайти метадані", але фактична помилка була іншою: я використав неправильне ім'я користувача.
rwitzel

0

Крім того, після оновлення ідентифікаторів вашого сховища переконайтеся, що ви працюєте в чистоті, оскільки release:prepareпідберете там, де він залишився. Тож ви можете зробити:

mvn release:prepare -Dresume=false або

mvn release:clean release:prepare


0

У Windows є дві настройки.xml.

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

Якщо %userprofile%\.m2\setting.xmlнабуде чинності, Maven не матиме доступу %MAVEN_HOME%\conf\setting.xml.


0

Це може бути викликано неправильною версією, ви можете двічі перевірити версію батька і версію біблітеков , щоб переконатися , що вони правильно і не дублюються, я відчув те ж проблеми


0

Я отримав 401помилку при використанні mvn gpg:sign-and-deploy-fileкоманди, і причиною було те, <MVN_HOME>/conf/settings.xmlщо не включає <server>тег, який ви можете отримати через, https://oss.sonatype.org/#profile;User%20Tokenде <id>це те саме, що-DrepositoryId

Щоб <MVN_HOME>бігтиmvn --version


0

У моєму випадку я видалив облікові дані для входу в сервер для центральних зі свого налаштування.

    <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=***

0

Не вдалося перенести файл:
http://mcpappxxxp.dev.chx.s.com:18080/artifactory/mcprepo-release-local/Shop/loyalty-telluride/01.16.03/loyalty-tell-01.16.03.jar .
Код повернення: 401, ПричинаФраза: Несанкціонована. -> [Довідка 1]

Рішення:

У цьому випадку вам потрібно змінити версію у файлі pom і спробувати використовувати нову версію.

Тут 01.16.03 вже існує, тому він провалився, і коли я спробував з версією 01.16.04, робота пішла успішно.


-1

Я отримав таку ж помилку при спробі розгортання в Artifactory сховище, наступне вирішило проблему для мене:

Перейдіть до налаштування сховища в артефактичному і ввімкніть точку " Примусово перевірити автентифікацію " і помилку 401 "Несанкціонований" не потрібно. (Звичайно, вам потрібно надати свої облікові дані у файлі settings.xml у кращому випадку простим текстом, щоб запобігти проблемам )

Я думаю, за замовчуванням, навіть якщо ви надаєте потрібні облікові дані у файлі settings.xml, вони не звикають, і ви отримуєте Несанкціонований виняток.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.