CloudFoundry .cfignore文件以排除两个JAR文件之一

时间:2018-11-02 09:40:26

标签: java cloudfoundry

我的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:我想在我的帖子中添加标签“ .cfignore”,但是很遗憾,我不允许这样做。

1 个答案:

答案 0 :(得分:0)

默认情况下,您的应用的根目录以及文件的推送位置为.。当您在manifest.yml中设置path或设置cf push -p时,就是在更改应用程序的根目录。

在您的示例中,您要将根更改为build/libs。因此,您需要:

  1. .cfignore放入build/libs文件夹中
  2. 使用build/libs中的相对路径。

当放入build/libs/.cfignore时,以下内容对我有用:

*
!foo-*-all.jar

最后只上传了一个JAR文件。

其他说明,请确保您使用的是最新版本。过去有bugs reported in this area


也许还值得一提,如果您调整构建以生成具有稳定名称(例如foo-push-me.jar)的文件,它将使事情变得简单得多。如果名称没有更改,则可以设置path: build/libs/foo-push-me.jar,而无需弄乱所有忽略文件。