You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何部署Maven构建的Spring Boot可执行Jar?解决Nexus拒收问题

我碰到过好几个朋友遇到这个问题,本质就是Spring Boot的可执行Jar为了支持直接运行,在文件开头加了一段Shell脚本,这就违反了Nexus对标准Jar格式的校验规则——标准Jar必须以PK(Zip格式的起始标识)开头。给你两个解决方案,优先选第一个,更符合Maven和Nexus的最佳实践:

解决方案1:生成两个Jar(标准Jar用于部署,可执行Jar用于运行)

Spring Boot Maven插件支持同时生成标准Jar和可执行Jar,只需要给可执行Jar添加一个classifier(分类器),这样部署到Nexus的是符合标准格式的原始Jar,而你可以单独使用带分类器的可执行Jar来运行。

修改你的插件配置如下:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.0.2.RELEASE</version>
    <configuration>
        <executable>true</executable>
        <!-- 给可执行Jar指定分类器,比如exec -->
        <classifier>exec</classifier>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

执行mvn clean deploy后:

  • 标准Jar(比如your-project-1.0.jar)会被部署到Nexus,这个Jar符合标准格式,Nexus会正常接收
  • 可执行Jar(比如your-project-1.0-exec.jar)会作为附属Artifact一起上传到Nexus,你需要的时候可以单独下载它来直接运行
解决方案2:调整Nexus的校验规则(不推荐)

如果你坚持只部署一个可执行Jar,可以修改Nexus中对应的仓库配置,关闭Jar格式的校验。步骤大概是:

  • 登录Nexus管理后台
  • 找到你要部署的目标仓库(比如Release或Snapshot仓库)
  • 进入仓库的「Configuration」配置页面
  • 找到「Format Validation」相关选项,关闭对Jar文件的格式校验

但这个方法不推荐,因为它会降低仓库的安全性和规范性,可能允许不符合标准的文件上传,引发后续依赖管理或构建问题。

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:45:37