我的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”,但是很遗憾,我不允许这样做。
答案 0 :(得分:0)
默认情况下,您的应用的根目录以及文件的推送位置为.
。当您在manifest.yml中设置path
或设置cf push -p
时,就是在更改应用程序的根目录。
在您的示例中,您要将根更改为build/libs
。因此,您需要:
.cfignore
放入build/libs
文件夹中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
,而无需弄乱所有忽略文件。