maven没有从settings.xml中选择存储库的用户名

pra*_*ddy 8 java deployment nexus maven

我在〜/ .m2/settings.xml中有这个:

<servers>
    <server>
        <username>deployment</username>
        <password>xxxxxx</password>
        <id>central</id>
    </server>
    <server>
        <username>deployment</username>
        <password>xxxxxx</password>
        <id>snapshots</id>
    </server>
</servers>
Run Code Online (Sandbox Code Playgroud)

这在我的POM中:

<distributionManagement>
  <repository>
      <id>central</id>
      <name>libs-release-local</name>
      <url>http://repo.example.com:8081/nexus/content/repositories/libs-release-local</url>
  </repository>
  <snapshotRepository>
      <id>snapshots</id>
      <name>libs-local</name>
      <url>http://repo.example.com:8081/nexus/content/repositories/libs-local</url>
  </snapshotRepository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)

我面临的问题是工件没有部署,nexus日志显示用于进行身份验证的用户名是"匿名的".这就是它失败的原因.为什么maven没有选择settings.xml中指定的用户名/密码,我做错了什么?

此外,我尝试使用-X运行maven,DEBUG日志说它正在读取设置的正确文件:

[DEBUG] Reading global settings from /home/praddy/apache-maven-3.0.5/conf/settings.xml
[DEBUG] Reading user settings from /home/praddy/.m2/settings.xml
[DEBUG] Using local repository at /home/praddy/.m2/repository
Run Code Online (Sandbox Code Playgroud)

Mar*_*fer 8

如果在 settings.xml 中配置镜像,则必须在服务器元素中使用镜像的 id。

<servers>
    <server>
        <id>MIRROR-ID</id>
        <username>...</username>
        <password>...</password>
    </server>
</servers>

...

<mirrors>
    <mirror>
        <id>MIRROR-ID</id>
        <name>...</name>
        <url>...</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>
Run Code Online (Sandbox Code Playgroud)


小智 3

如果存储库受 BasicAuth 保护,您可以尝试一下:

将其添加到您的settings.xml

<servers>
    <server>
        <!-- Link this id here to the repo ID -->
        <id>central</id>
        <configuration>
            <httpHeaders>
                <property>
                    <name>Authorization</name>
                    <value>Basic ZGVwbG95bWVudDp4eHh4eHg=</value>
                </property>
            </httpHeaders>
        </configuration>
    </server>
</servers>
Run Code Online (Sandbox Code Playgroud)

您可以value通过以下方式获取该零件:

curl -v --user deployment:xxxxxx http://repo.example.com:8081/nexus/content/repositories/libs-release-local 2>&1 | grep Authorization
Run Code Online (Sandbox Code Playgroud)

这应该会产生类似于以下内容的输出:

> Authorization: Basic ZGVwbG95bWVudDp4eHh4eHg=
Run Code Online (Sandbox Code Playgroud)