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




我必须在我的java/maven heroku应用程序中使用一个非托管的SNAPSHOT依赖项。我使用本文中描述的项目本地maven存储库来实现这一点。

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

是否有手动或自动清理此依赖缓存的方法

我发现了这个maven插件(它进行了本地构建,并将生成的工件推送到heroku(,但这并不是我想要的方式。

有人可能会说,首先使用这种快照依赖关系是一种糟糕的做法,但我认为还有其他或多或少合理的理由来清理现金,例如,由于非托管依赖关系在从项目本地存储库中删除后甚至不会被删除,因此存储泄漏。

我很感激你的回答

java构建包的一个分支清除maven缓存。要使用它,请将您的应用程序配置为使用cache_clear分支:

heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-java.git#cache_clear

===更新===

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

$ heroku plugins:install https://github.com/heroku/heroku-repo.git

$ heroku repo:purge_cache -a appname

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

$ heroku config:set MAVEN_CUSTOM_GOALS="clean package"
$ heroku config:set MAVEN_CUSTOM_OPTS="--update-snapshots -DskipTests=true"

现在,它将在构建之前从存储库下载最新的SNAPSHOT。有关更多详细信息,请参阅这个针对java的heroku构建包。

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

我写了一个插件,它有另一个选择:将容器+战争图像捆绑到git存储库的基本图像(目前,它是winstone和/或jetty(中,并将其推送到Heroku,从而更容易部署(我认为(:]

http://cedarhero.ingenieux.com.br/heroku-maven-plugin/

这并不能直接回答这个问题,但如果您在Clojure项目(使用Leiningen(中遇到同样的问题,有一种比每次构建都清除缓存更好的方法来处理这个问题:对正在使用的存储库使用:update :always属性。(https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L91)

:repositories [["releases" {:url "http://blueant.com/archiva/internal"
                            ;; How often should this repository be checked for
                            ;; snapshot updates? (:daily, :always, or :never)
                            :update :always}]]

最新更新