使用Maven部署Java应用至Heroku时遇版本定义错误求助
解决Heroku Java构建时的插件版本缺失错误
从你提供的错误信息和pom.xml片段来看,问题出在你的pom.xml里还有某个插件没有显式指定版本号,而Heroku使用的Maven 3.6.2对插件版本的要求比你本地环境更严格——它要求所有在<build><plugins>下声明的插件必须明确指定版本,不能依赖继承或默认版本。
错误提示里已经给出了具体位置:@ line 238, column 12,你需要检查pom.xml的这一行,找到对应的插件,给它加上<version>标签。
具体解决步骤:
- 打开你的pom.xml文件,定位到第238行,找到那个没有版本号的
<plugin>节点。 - 给这个插件添加对应的版本号,比如如果是
maven-surefire-plugin,可以添加类似:<version>2.22.2</version> - 除此之外,建议你全局检查整个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
相关产品推荐
相关产品推荐

