我的Spring Boot应用程序的pom.xml非常小。我的父标签指向我的公共 pom 应用程序,而公共 pom 是保存我所有 Spring Boot 依赖项的东西。我可以清理、编译、打包和运行我的应用程序而不会出现任何错误,但是当我尝试运行 cf push 时,出现以下错误:
[ERR] [Buildpack] ERROR Finalize failed with exception #<RuntimeError: No container can run this application. Please ensure that you've pushed a valid JVM artifact or artifacts using the -p command line argument or path manifest entry. Information about valid JVM artifacts can be found at https://github.com/cloudfoundry/java-buildpack#additional-documentation.
我正在查看cf java-buildpack的文档,似乎我的应用程序无法通过spring引导容器检测。我是否需要将某些内容添加到应用程序的 pom 文件中,以便构建包将其识别为有效的 Spring 启动应用程序?
一般情况下的操作顺序应如下所示
-
组装要推送的工件
mvn clean package
在项目目录下 -
推送工件
cf push yourAppName -p target/your-hello-world-1.0.0-SNAPSHOT.jar
在同一目录下
忘记指定工件是初学者的典型陷阱
-
>疑难解答
如果您期望 Spring 引导容器拾取工件,请确保您的工件(即
your-hello-world-1.0.0-SNAPSHOT.jar
(包含 Spring 引导 jar -lib/spring-boot-.*.jar
,因为这是检测标准。如果您使用 Spring Boot Maven 插件,请确保它已按照此处所述实现重新打包目标如果仍然没有运气,或者您想要更多可配置的 Tomcat 容器来处理您的工件 - 将包装更改为 war,甚至切换到可部署的 war
由于 spring-boot-maven-plugin 而发生该问题。重新包装解决了我的问题。
https://docs.spring.io/spring-boot/docs/current/maven-plugin/usage.html