java - CloudFoundry .cignore 文件以排除两个 JAR 文件之一
问题描述
我的 Gradle 构建作业在 build/libs 文件夹下创建了两个 JAR 文件(使用更改的 VERSION 占位符):
$ ls build/libs
foo-VERSION.jar foo-VERSION-all.jar
只有 'foo-VERSION-all.jar' 代表通过上传到 CloudFoundry 实例的工件
$ cf push
我的问题是两个 JAR 文件都上传到 CloudFoundry 实例,导致错误消息如
没有容器可以运行此应用程序。请确保您已使用 -p 命令行参数或路径清单条目推送了一个或多个有效的 JVM 工件。
好的,-p CLI 参数是一个选项,但应该有另一个选项!
在 CloudFoundry 的 manifest.yml 中,我声明了一个路径:
$ grep path manifest.yml
path: build/libs
现在应该可以声明一个 .cfignore 文件(应该类似于众所周知的 .gitignore 文件)来排除 foo-VERSION.jar 文件,但我不明白,例如通过以下尝试:
$ cat .cfignore
*
!build/libs/*-all.jar
那有什么问题?任何想法让它工作?
谢谢
基督教
PS:我想在我的帖子中添加一个标签“.cignore”,但不幸的是我不被允许。
解决方案
默认情况下,您的应用程序的根目录和推送文件的位置是.
. 当您path
在 manifest.yml 或 set 中设置cf push -p
时,您正在更改应用程序的根目录。
在您的示例中,您将根更改为build/libs
. 因此,您需要:
- 放入
.cfignore
文件build/libs
夹 - 使用来自
build/libs
.
放入时,以下内容对我有用build/libs/.cfignore
:
*
!foo-*-all.jar
最终只上传了一个 JAR 文件。
其他注意事项,请确保您使用的是最新版本。在这个领域报告了一些过去的错误。
可能还值得一提,如果您调整构建以生成具有稳定名称的文件(例如foo-push-me.jar
. 如果名称没有改变,你可以设置path: build/libs/foo-push-me.jar
并且你不需要弄乱所有的忽略文件。
推荐阅读
- python-3.x - 如何在 matplotlib 中绘制垂直条
- c++ - 如何使用 C++ 中的运行时键访问 json 文件中的值
- reactjs - 当我尝试在 reactjs 中使用 pakage.json 中的主页时,图像消失了
- javascript - javascript下拉列表中的动态选项
- acumatica - 无法根据操作事件的销售订单更新销售报价屏幕中的自定义字段
- android-sharing - 共享文件在android studio中不起作用
- revit-api - ReInsert_ing doc.ParameterBindings 时 VariesAcrossGroups 丢失?
- google-colaboratory - 试图让一些 javascript 应用程序在 colab 中运行
- python - cvxpy 和 numpy 之间的版本冲突:“针对 API 版本 0xe 编译的模块,但是这个版本的 numpy 是 0xd”
- javascript - 如何将从 MousePosition 类读取的坐标分配给变量