【问题标题】:cloud foundry dependency jars for spring boot用于 Spring Boot 的 Cloud Foundry 依赖 jar
【发布时间】:2017-04-23 12:08:58
【问题描述】:

假设当我制作一个 java spring boot 应用程序时,它需要 jars 。

但是当我将我的应用程序部署到 Cloud Foundry 时,所有 jar 都会使用我的应用程序构建,然后转到 Cloud Foundry 或 Cloud Foundry 通过查看 pom 等来提供 jar 依赖项。 我看过构建文件夹,但罐子不在那里,所以它是如何工作的。 我是云代工的新手,所以如果有人能解决我的疑问。

【问题讨论】:

    标签: jar hana cloud-foundry


    【解决方案1】:

    对于大多数应用程序类型和构建包,当您将应用程序推送到 Cloud Foundry 时,您就是在推送源代码,并且如有必要,这些源代码会在构建包的暂存过程中进行编译。例如,使用 Golang 构建包,您可以推送您的 Go 源代码,它会在 staging 中编译然后运行。

    此规则的两个例外是 Java 构建包和二进制构建包。这两个构建包假定您正在推送已编译的位并且不为您编译任何内容。

    对于 Java,这意味着您将在本地或 CI 系统上运行 Maven、Gradle 或其他构建系统,以生成可部署的工件。这可能是 WAR 文件或 JAR 文件,或其他一些文件(有关其他支持的格式,请参阅 Java build pack docs 上的“标准容器”)。无论格式如何,它都需要是一个完整且可部署的单元,因此它需要包含所有依赖库。

    附带说明一下,cf cli 有一个很好的功能,可以帮助加快cf push 进程并节省带宽。它将任何正在上传且大小超过 65k(默认,操作员可以更改)的文件与云控制器上缓存的文件相匹配。如果缓存中已经存在本地文件,则不再上传。这对于在推送之间不经常更改的依赖 JAR 文件非常有用。

    【讨论】:

    • 非常感谢 Daniel 的努力和分享的知识。
    【解决方案2】:

    Spring Boot 应用程序通常使用 Spring Boot maven 或 gradle 插件打包为“胖罐”。应用程序代码和所有依赖的 jar 被打包到一个 jar 文件中。

    部署 Java 应用程序时,Cloud Foundry 不会下载依赖的 jar。应用程序有责任携带所有依赖项。

    【讨论】:

    • 那么我该如何去“带来所有依赖项”呢?如果我确实将所有依赖项内部化到一个胖 jar 中,那么我的一个依赖项需要一个外部配置文件。我可以用我的 spring boot jar 推送配置文件吗?到目前为止,我的经验表明,如果我推送一个目录而不是单个文件,java buildpack 将不再检测到 spring boot 应用程序。
    • 如果您将目录传递给cf push -p,CLI 将上传目录中的所有文件。如果您将存档(.jar、.war、.zip)传递给cf push -p,CLI 将在本地解压缩并上传包含的文件。 Buildpacks 总是看到一个文件列表,而 Java buildpack 期望看到一组 .class 文件。如果 cf CLI 发送一个包含一个 .jar 文件和一个配置文件的目录,JBP 将不会检测到 Java 应用程序。
    • 外部配置文件是否包含 Spring Boot 属性,还是某个库的配置文件希望能够从文件系统中读取?这里讨论了一些关于外部配置的建议:stackoverflow.com/questions/43506324/….
    • @ScottFrederick 这是特定库的自定义配置/许可文件,它无法从外部位置读取。配置文件的路径可以通过环境变量设置。我已经能够通过简单地将spring boot jar解压缩到与清单相同的文件夹中,并将配置文件包含在该文件夹中来解决它。在这种情况下,所有内容都会一起上传。我想这是不将配置文件捆绑到 jar 中的预期方法。
    • 如果在构建时无法将配置文件捆绑到 jar 中(例如作为 Boot build 插件构建 fat jar 之后的后处理步骤),那么我想不出比您当前的解决方案更好。
    猜你喜欢
    • 2018-10-03
    • 2019-11-21
    • 2019-07-26
    • 2017-06-18
    • 2018-06-06
    • 1970-01-01
    • 2022-12-10
    • 2016-02-08
    • 2011-07-19
    相关资源
    最近更新 更多