假设当我创建一个java spring引导应用程序时,它需要jar。
但是当我将我的应用程序部署到云代工厂时,所有的罐子都会用我的应用程序构建,然后转到云代工厂或云代工厂通过查看pom等来提供罐子依赖性。 我见过构建文件夹但是罐子不存在,所以它是如何工作的。 我是云代工厂的新手,所以如果有人能清除我的怀疑。
答案 0 :(得分:2)
对于大多数应用程序类型和构建包,当您将应用程序推送到Cloud Foundry时,您正在推送源代码,并且如果需要,源代码将在构建包的暂存过程中进行编译。例如,使用Golang构建包,您可以推送Go源代码,并在分段中编译然后运行。
此规则的两个例外是Java构建包和二进制构建包。这两个构建包假设您正在推送已编译的位并且不为您编译任何内容。
对于Java,这意味着您将在本地或在CI系统上运行Maven,Gradle或其他一些构建系统,以生成可部署的工件。这可以是WAR文件或JAR文件,或其他一些内容(有关其他支持的格式,请参阅Java build pack docs上的“标准容器”)。无论格式如何,它都需要是一个完整且可部署的单元,因此需要包含所有依赖库。
作为旁注,cf cli有一个很好的功能,有助于加快cf push
进程并节省带宽。它匹配任何正在上传的文件,大小超过65k(默认情况下,运营商可以更改)到云控制器上缓存的文件。如果缓存中已存在本地文件,则不会再次上载。这适用于依赖的JAR文件,这些文件在推送之间通常不会发生变化。
答案 1 :(得分:1)
Spring Boot应用程序通常打包为"胖罐"使用Spring Boot maven或gradle插件。应用程序代码和所有相关的jar都打包到一个jar文件中。
部署Java应用程序时,Cloud Foundry不会下载相关的jar。应用程序负责将所有依赖项带入其中。