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

使用Maven部署Java应用至Heroku时遇版本定义错误求助

解决Heroku Java构建时的插件版本缺失错误

从你提供的错误信息和pom.xml片段来看,问题出在你的pom.xml里还有某个插件没有显式指定版本号,而Heroku使用的Maven 3.6.2对插件版本的要求比你本地环境更严格——它要求所有在<build><plugins>下声明的插件必须明确指定版本,不能依赖继承或默认版本。

错误提示里已经给出了具体位置:@ line 238, column 12,你需要检查pom.xml的这一行,找到对应的插件,给它加上<version>标签。

具体解决步骤:

  1. 打开你的pom.xml文件,定位到第238行,找到那个没有版本号的<plugin>节点。
  2. 给这个插件添加对应的版本号,比如如果是maven-surefire-plugin,可以添加类似:
    <version>2.22.2</version>
    
  3. 除此之外,建议你全局检查整个pom.xml里的所有<plugin>节点,确保每个插件都有明确的<version>声明——哪怕是Maven的核心插件(比如maven-resources-plugin、maven-jar-plugin等),在Heroku的干净构建环境下都不能省略版本。

额外优化建议:

如果你不想在每个插件里重复写版本,可以在pom.xml的<build><pluginManagement>节点下统一管理所有插件的版本,示例如下:

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.2</version>
      </plugin>
      <!-- 其他插件版本统一在这里声明 -->
    </plugins>
  </pluginManagement>
  <plugins>
    <!-- 这里只需要引用插件,不需要写版本 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
    <!-- 其他插件引用 -->
  </plugins>
</build>

修改完成后,先在本地执行mvn clean install -DskipTests验证构建是否正常,然后再推送到Heroku即可解决这个错误。

内容的提问来源于stack exchange,提问作者ladyDon303

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:07:35