从基本父 pom 继承 Spring 引导依赖项会导致我的应用程序的 cf push 命令失败



我的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 启动应用程序?

一般情况下的操作顺序应如下所示

  1. 组装要推送的工件

    mvn clean package在项目目录下

  2. 推送工件

    cf push yourAppName -p target/your-hello-world-1.0.0-SNAPSHOT.jar在同一目录下

忘记指定工件是初学者的典型陷阱

  1. >疑难解答

    如果您期望 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

最新更新