如何清理Heroku依赖项缓存(非托管maven依赖项)

如何清理Heroku依赖项缓存(非托管maven依赖项),heroku,Heroku,我必须在java/maven heroku应用程序中使用非托管快照依赖项。 我使用项目本地maven存储库来实现这一点,如中所述 Heroku缓存构建之间的依赖关系。不幸的是,Heroku没有注意到快照版本是否更改并继续使用缓存的依赖项。这会导致编译错误,因为我依赖于快照版本中的更改 有没有办法手动或自动清除此依赖项缓存 我发现了这一点(它进行本地构建,并将生成的人工制品推送到heroku),但这并不是我想要的方式 有人可能会说,首先使用此快照依赖项是一种不好的做法,但我认为清理现金或多或少还有


我必须在java/maven heroku应用程序中使用非托管快照依赖项。 我使用项目本地maven存储库来实现这一点,如中所述

Heroku缓存构建之间的依赖关系。不幸的是,Heroku没有注意到快照版本是否更改并继续使用缓存的依赖项。这会导致编译错误,因为我依赖于快照版本中的更改

有没有办法手动或自动清除此依赖项缓存

我发现了这一点(它进行本地构建,并将生成的人工制品推送到heroku),但这并不是我想要的方式

有人可能会说,首先使用此快照依赖项是一种不好的做法,但我认为清理现金或多或少还有其他合理的原因,例如,存储泄漏,因为如果从项目本地存储库中删除非托管依赖项,它们甚至不会被删除

我很感激你们的回答,有一种方法可以清除maven缓存。要使用它,请将应用程序配置为使用
缓存\u clear
分支:

heroku配置:设置BUILDPACK\u URL=https://github.com/heroku/heroku-buildpack-java.git#cache_clear

==更新===

任何应用程序上都有一个清除缓存的程序。安装它并运行命令

$heroku插件:安装https://github.com/heroku/heroku-repo.git


$heroku repo:purge_cache-一个appname

我已经编写了一个插件,其中有一个备选方案:将容器+war映像捆绑到一个git存储库基础映像(目前,它要么是winstone,要么是jetty)中,然后推送到heroku,从而更容易部署(我认为):]


这并不能直接回答这个问题,但是如果Clojure项目(使用Leiningen)也存在同样的问题,那么有一种更好的方法来处理这个问题,而不是在每次生成时清除缓存:为正在使用的存储库使用
:update:always
属性。()


通过控制台登录heroko,转到应用程序的git存储库目录,运行以下命令,然后再次尝试推送到heroku git存储库

$ heroku config:set MAVEN_CUSTOM_GOALS="clean package"
$ heroku config:set MAVEN_CUSTOM_OPTS="--update-snapshots -DskipTests=true"
现在,它将在构建之前从存储库下载最新的
快照。
有关更多详细信息,请参阅此


您还可以为您的maven配置自定义的
settings.xml
,请参阅。

谢谢您的回复。正如所料,使用buildpack会导致相当长的依赖项下载。不幸的是,我现在遇到了以下错误:
无法将工件::pom:1.3-SNAPSHOT从/传输到project.local(文件:/tmp/build\u asdf/repo):校验和验证失败,但应为
。在构建工件时使用'-DcreateChecksum=true'没有帮助。为了避免校验和问题,删除失败自项目(本地)存储库标记很有帮助。我对更新投了赞成票。事实上,历史部分可能应该用删除线来表示heroku插件是目前首选的方式。我正在使用Django和pip安装程序,即使我通过提交或分支名称指定了确切的版本,也无法让heroku获取最新版本。这是一个救命稻草。现在是heroku插件:安装heroku repo
来安装它。比其他答案更好,因为它不需要额外的插件、文件或文件hacks@MichaelTecourt谢谢
$ heroku config:set MAVEN_CUSTOM_GOALS="clean package"
$ heroku config:set MAVEN_CUSTOM_OPTS="--update-snapshots -DskipTests=true"