尝试使用 Maven 将 jar 部署到 Nexus 3 存储库但能够下载依赖项时访问被拒绝

Access denied when trying to deploy jars to a Nexus 3 repository using Maven but able to download dependencies

我已经在具有以下存储库的服务器上安装了 Nexus 3:

第一个回购:

Name: maven-central, 
Type: proxy, 
Layout policy: Permissive, 
URL: http://ip:port/nexus/repository/maven-central/,
Remote storage: https://repo1.maven.org/maven2/

第二个回购:

Name: own,
Type: hosted,
Version policy: Mixed,
Layout policy: Permissive,
URL: http://ip:port/nexus/repository/own/

回购组:

Name: whatever,
Format: maven2,
Type: group,
Members: maven-central, own
URL: http://ip:port/nexus/repository/whatever/

我已经为以下存储库安装了 SSL 证书:repo1.maven.org 和 repo.maven.apache.org。

settings.xml 具有以下结构:

    <localRepository>${user.home}/.m2/repository</localRepository>


    <profiles>
        <profile>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <id>maven-repository</id>
                <url>http://ip:port/nexus/repository/whatever/</url>
                <snapshots>    
                    <enabled>true</enabled>
                </snapshots>   
            </repository>
         </repositories>

         <pluginRepositories>
                <pluginRepository>
                        <id>maven-repository-plugin</id>
                        <name>maven-repository-plugin</name>
                        <url>http://ip:port/nexus/repository/whatever/</url>
                        <releases>
                                <enabled>true</enabled>
                        </releases>
                        <snapshots>
                            <enabled>true</enabled>
                            <updatePolicy>interval:15</updatePolicy>
                            <checksumPolicy>fail</checksumPolicy>
                        </snapshots>
                </pluginRepository>
        </pluginRepositories>

</profiles> 

<servers>
    <server>
        <id>maven-repository</id>
        <username>admin</username>
        <password>**</password>
    </server>
</servers> 

问题是我可以使用此 settings.xml 文件下载项目依赖项,但我无法使用 Maven 部署文件,因为出现以下错误:

Failed to deploy artifacts groupId:artifactId:version:jar:version from/to remote-repository(http://ip:port/nexus/repository/whatever): Access denied to: http://ip:port/nexus/repository/whatever/groupId/artifactId/...,

当 运行 以下部署命令时:

 deploy:deploy-file   
-Durl=http://ip:port/nexus/repository/own/
-DgeneratePom=false   
-DgroupId=groupId  
-DartifactId=artifactId 
-Dversion=version  
-Dpackaging=jar   
-Dfile=name.jar  

有什么我可以做的吗?我尝试更改存储库以使用托管存储库(自己的)而不是组,我尝试在 settings.xml 文件中添加镜像。

我不得不提一下,用户是默认管理员,具有默认角色(全部)。

我在想这可能是 SSL 入站证书的问题,但在 Nexus 3 中我不知道如何禁用该检查。此外,目前无法手动上传 jars。

编辑:我也尝试添加镜像,但是当我添加镜像时,下载停止工作。 第二次编辑:使用 HTTP 我能够上传文件(使用 CURL)

您需要将“-DrepositoryId=someid”添加到部署文件目标,其中 "someid" 是 settings.xml 文件中具有部署所需凭据的服务器部分的 ID .

<settings>
  <servers>
    <server>
      <id>someid</id>
      <username>deployment</username>
      <password>deployment123</password>
    </server>
  </servers>

尽管问题很老,但我记得我有 2 个问题。

我已通过以下方式修复它们:

  1. 添加和设置正确的代理和正确的非代理主机。
  2. 添加正确的信任库(和正确的证书)。