【问题标题】:maven Failed to transfer jar file to nexus repositorymaven 无法将 jar 文件传输到 nexus 存储库
【发布时间】:2021-02-27 11:48:55
【问题描述】:

我在 Nginx 反向代理后面的服务器上安装了一个 nexus。我创建了 maven-snapshotsmaven-releases 存储库。两个存储库都允许重新部署。版本策略是 Snapshot 用于 maven-snapshotsRelease 用于 maven-releases 我还创建了一个具有nx-repository-view-*-*-* 权限的角色和一个具有该给定角色的用户nx-dev。 在我的 Maven 设置中:

<server>
  <id>nexus-snapshots</id>
  <username>nx-dev</username>
  <password>NX-DEV-PASSWORD</password>
</server>

<server>
  <id>nexus-releases</id>
  <username>nx-dev</username>
  <password>NX-DEV-PASSWORD</password>
</server>

在我的项目 POM 文件中:

<distributionManagement>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <url>https://nexus.mysite.com/repository/maven-snapshots/</url>
    </snapshotRepository>
    <repository>
        <id>nexus-releases</id>
        <url>https://nexus.mysite.com/repository/maven-releases/</url>
    </repository>
</distributionManagement>

当我运行mvn -X deploy 命令时,我得到这个错误:

Failed to transfer file https://nexus.mysite.com/repository/maven-releases/com/myapp/my-app/0.0.3/myapp-0.0.3.jar  with status code 400

jar 文件大小为 47MB,远小于 Nginx 允许的 1G:

client_max_body_size 1G;

当我浏览我的存储库时,我可以看到.pom.pom.md5.pom.sha1 文件,但没有上传jar 文件。有什么想法吗?

编辑:

在 nexus 日志中我看到了这个警告:

2020-11-16 10:00:59,843+0000 WARN  [qtp1621258076-423]  
nx-payware org.sonatype.nexus.repository.view.handlers.ExceptionHandler - Invalid content: 
PUT /com/myapp/my-app/0.0.3-SNAPSHOT/my-app-0.0.3-20201116.095741-1.jar: 
org.sonatype.nexus.repository.InvalidContentException: 
Detected content type [application/x-sh], but expected [application/java-archive]: 
/com/myapp/my-app/0.0.3-SNAPSHOT/my-app-0.0.3-20201116.095741-1.jar

【问题讨论】:

  • 代码 400 在 Nexus 中意味着工件之前已经上传过......版本是不可变的......所以你必须制作一个新版本。此外,你给/com/myapp/0.0.3/myapp-0.0.1.jar... 的东西看起来不对...
  • 两个存储库都允许重新部署,如果我从存储库中删除所有工件并重新开始,我会得到相同的结果。所有相关文件已上传,但没有 jar 文件。
  • 你能显示你的pom文件吗...你在nexus前面有一个nginx吗?如果是,为什么?您是否尝试过删除 nginx 并直接访问 Nexus?你检查过Nexus的日志和nginx的日志吗?
  • Nginx 日志没问题,但在 nexus 日志中,我收到了警告。我更新了问题。
  • 首先这是一个 SNAPSHOT 而不是一个版本...你检查过 jar 文件吗?你可以unzip -t JARFILE吗?请添加您的 pom 文件...

标签: maven maven-3 nexus nexus3


【解决方案1】:

Spring boot 可执行 jar 文件被检测为 shell 脚本。禁用托管存储库中的文件内容验证以解决此问题。

取消选中严格内容类型验证:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 2017-06-16
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多