2013-03-16 14 views
12


Java/maven heroku uygulamasında yönetilmeyen bir SNAPSHOT bağımlılığı kullanmam gerekiyor. Bunu, this article.Heroku bağımlılık önbelleği nasıl temizlenir (yönetilmeyen maven bağımlılıkları)

'da gösterildiği gibi bir proje yerel maven deposu kullanarak yapıyorum. Heroku, yapılar arasındaki bağımlılıkları önbelleğe alır. Talihsizce Heroku, SNAPSHOT Sürümünün önbelleğe alınmış bağımlılığı değiştirip değiştirmediğini fark etmez. Bu, SNAPSHOT sürümündeki değişikliklere bağlı olduğum için derleme hatalarına yol açıyor.

Bu bağımlılık önbelleğini el ile veya otomatik olarak temizlemenin bir yolu var mı?

Bu maven plugin'u buldum (yerel bir yapı oluşturuyor ve ortaya çıkan artefaktları kahramana iter) ama aslında bunu yapmak istemiyorum. Bu anlık görüntü bağımlılığını kullanmanın kötü bir uygulama olduğunu öne sürebilir ancak bence nakit temizliği için diğer geçerli nedenler daha çok ya da daha azdır. yönetilmeyen bağımlılıklar olarak depolama sızması, proje yerel havuzundan silinirse bile kaldırılmaz.

Ben maven önbelleği temizler java buildpack bir branch var Cevabınız

cevap

25

teşekkür ederiz. Kullanmak için, uygulama cache_clear dal almaya yapılandırın:

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

=== Güncelleme ===

herhangi bir uygulamayı önbelleği temizler bir plugin var. Yükleyin ve purge-cache komutunu çalıştırın.

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

$ heroku repo:purge_cache -a appname

+0

Cevabınız için teşekkür ederiz. Beklendiği gibi, buildpack'in kullanılması oldukça uzun bir bağımlılık indirmesine yol açar. Maalesef şu hatayı alıyorum: ': : pom: 1.3-SNAPSHOT nesnesini aktarma yapılamadı: project.local (dosya:/tmp/build_asdf/repo): Checksum doğrulaması başarısız oldu, beklenen ancak ' dur. Eserleri inşa ederken ´-DcreateChecksum = true´ kullanımı yardımcı olmadı. – mulrich

+0

sağlama toplamı etrafında gezinmek için fail öğesinden (proje yerel) depo etiketini kaldırmakta yardımcı olur. – mulrich

+3

Güncellemeyi kaldırıyorum. Aslında, tarihsel bölüm belki de kahramanca eklentisinin tercih edilen bir yol olduğunu göstermek için bir çizili şekilde tasarlanmalıdır. –

1

Alternatif bir üstlenmek eklentisi yazdım: git depo taban görüntü içine kabı + savaş görüntüsünü gruplama (şimdilik, onun Winstone ve/veya iskeleye) hangi böylece (sanırım) dağıtmak için kolay maving, Heroku aktarıldıktan: Eğer sa yaşıyorsanız]

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

0

Bu doğrudan soruya cevap değil, Clojure projesiyle (Leiningen kullanarak) sorun, her bir yapıyla önbelleği temizlemekten daha iyi bir yol var: Çalışmakta olduğunuz depoya ilişkin :update :always özelliğini kullanın. (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}]] 
4

Girişi, bunu aşağıdaki komutları çalıştırın, uygulamanızın git depo dizinine gidin, konsol tarafından heroko ve Şimdi Heroku git depo yine

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

için zorlamaya denemek için Oluşturmadan önce en son SNAPSHOT deposundan indirebilirsiniz. Daha fazla bilgi için bu heroku build pack for java adresine bakın.

Ayrıca, maveniniz için bir özel settings.xml yapılandırabilirsiniz, bu heroku documentation'a bakın.

+1

Diğer eklentilerden daha iyi olduğu için ek eklenti, dosya veya hack gerektirmez –

+0

@MichaelTecourt Teşekkürler. – Visruth

İlgili konular