尝试访问nexus私有存储库时,maven收到“未授权”

时间:2015-09-14 16:51:43

标签: maven nexus

我在EC2实例上设置了一个私有nexus repo管理器,并按照互联网上的各种说明,了解如何设置maven项目以使用它。我也禁用了匿名帐户。     我可以通过curl -U username:password <the_url>连接和复制存储库     它似乎工作正常。然而,当我尝试使用maven(任何目标)时,我得到的第一件事就是

    [WARNING] Could not transfer metadata org.apache.maven.plugins:maven-compiler-plugin/maven-metadata.xml from/to nexus (http://MY_NEXUS_HOST:8081/nexus/content/groups/public): Not authorized , ReasonPhrase:Unauthorized.

然后mvn命令失败,因为它无法在任何地方找到插件。所以我可以使用rest命令并且它按预期工作,但不是通过maven这一事实告诉我,这是配置问题。我想我明白发生了什么,我检查并重新检查了文件,但我没有看到任何错误。     这是settings.xml文件

<servers>
  <server>
      <id>nexus-snapshot</id>
      <username>USER_NAME</username>
      <password>USER_PASSWD</password>
  </server>
  <server>
      <id>nexus-release</id>
      <username>USER_NAME</username>
      <password>USER_PASSWD</password>
  </server>

</servers>
<mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://MY_NEXUS_HOST:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases>
              <enabled>true</enabled>
          </releases>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases>
              <enabled>true</enabled>
              <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
              <enabled>true</enabled>
              <updatePolicy>always</updatePolicy>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>

这是pom文件的相关部分

    <distributionManagement>
        <repository>
            <id>nexus-release</id>
            <name>Nexus Release Repository</name>
            <url>http://MY_NEXUS_HOST:8081/nexus/content/repositories/releases</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshot</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://MY_NEXUS_HOST:8081/nexus/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

我想知道是否有办法看到我遇到的确切问题。例如,如果我得到401,403或(由于某种原因?)404。 如果有人可以请你帮助我,我会非常感激。 哦,maven和nexus都是上周的最新版本。 *编辑,因为无论您在点击提交之前检查了多少次......

1 个答案:

答案 0 :(得分:7)

哦,我的时髦山羊。 问题是显然在settings.xml中,Id字段必须与服务器字段中的Id字段相同。即:

<servers>
 <server>
      <id>nexus-release</id>          <---THIS MUST MATCH
      <username>USER_NAME</username>
      <password>USER_PASSWD</password>
  </server>
</servers>
<mirrors>
    <mirror>
      <id>nexus-release</id>          <---THIS
      <mirrorOf>*</mirrorOf>
      <url>http://MY_NEXUS_HOST:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

我想我使用哪一个并不重要(在这种情况下它们都是相同的,但并不一定总是如此)。