2011-10-10 27 views
38

Gradle'a bakıyordum ve oldukça ilginç görünüyor. Komut dosyalarınızı XML'den başka bir dilde yazabilmenin oldukça güzel olduğunu düşünüyorum ve çokgenli Maven POM dosyalarının hala uygun bir seçenek olup olmadığı bana açık değil.Maven 2/3'den Gradle'a Geçiş

Yapılandırma aracı olarak Maven 2.2.1 kullanan bir proje üzerinde çalışıyorum. Bu proje:

Maven gelen Gradle için göçler üzerinde var orada herhangi deneyimler Are çok modülünü

  • bir Artifactory vekil depo dayanır
  • kullandığı (kendi de) eklentileri olan ? Gotchas, acı noktaları, köşe davaları? Her türlü deneyim çok açıktır.

  • cevap

    34

    Maven'den Gradle'a göç, Ant'den Maven'e kadar kolay değildir (en azından şu anda). Kolayca reuse Ant scripts ve Gradle derlemenizde birinci sınıf vatandaşlar olabilirsiniz. Ayrıca deep import of Maven builds için Gradle roadmap üzerinde bir görev var.

    Şimdiye kadar iki Enterprise Maven şirketi Gradle'a geçtim. Her ikisi de standart Maven eklentileri kullanan çok modüllü projelerdi. Temelde, Gradle hakkında en azından bazı bilgileri gerektiren Gradle yöntemini yeniden yazdım. Deneyimlerime dayanarak, Gradle'da da aynı yapıyı kolayca çalıştırabilirsiniz. Gradle gerçekten seni buraya sokmaz ve oldukça esnektir. Yol boyunca, Maven'in hangi eklentiyi kullandığınıza bağlı olarak mevcut olmayan özel bir eklenti yazmanız gerektiğini görebilirsiniz. Ancak, zaten orada bir wide breath of plugins var. Şimdiye kadar henüz gerçek bir engelle karşılaşmadım. Gradle belgeleri oldukça iyi olsa da, sorunlarınızdan birinin çözümünü bulmak için kendinize çok sayıda Gradle forum mesajı okuyabilirsiniz. Standart Maven özelliklerinden bazıları, kutu dışında desteklenmemektedir. provided kapsamı veya WAR inplace. Ancak, çevresinde kolay yollar var. Ben artik depolar kullanmadim. Anlaştığımlar Nexus depolarıydı. Bildiğim kadarıyla Gradle'lar, Artifactory için de iyi bir desteğe sahipler. Düzenleme: JFrog, bir Artifactory Gradle plugin sağlar.

    Başlamak için iyi bir yol, Maven derlemenizden bir Gradle komut dosyası oluşturmanıza olanak veren Maven2Gradle geçiş aracını kullanmaktır. Şahsen ben henüz kullanmadım. Gradle yapısını, Maven derlemesinde yan yana bırakarak, herhangi bir soruna neden olmadı. Maven, , build altında Gradle altında çıkışını koydu. Ekibinizi değişim için hazırladığınızdan emin olun. Gradle yapısını denemelerine ve aracı tanımalarına izin verin.

    Tam olarak geçiş yaptığınızda, yapınızın bakım ve genişletilebilirliğinden çok memnun kalacaksınız. Özel yapım mantığı eklemek çok kolaydır ve XML-arazisini bıraktığınız için minnettar olacaksınız. Performans açısından, geri adım atmayacaksınız. Artımlı yapı özelliği işini çok iyi yapıyor.

    +2

    Gradle: Eğer pom.xml hemen altında komutunu çalıştırın sahip dizinde –

    +2

    Ne yazık ki, projeniz WAR eklentisini uygulamıyorsa, bu size yardımcı olmaz. Kendi "sağlanan" yapılandırmanızı tanımlamanız gerekir. Bu hala tartışmalı olarak Gradle topluluğunda tartışılmaktadır. bunu görmek [JIRA bileti] (http://issues.gradle.org/browse/GRADLE-784). –

    11

    Ayrıca, bir maven projesini platforma taşıyan deneyimimin this write-up aracılığıyla okumak isteyebilirsiniz.

    buildDir = 'target' 
    
    +8

    Web sitenizin kaybolması durumunda bir özet ekleyebilir misiniz? –

    1

    Her zaman inşa çıktı maven gibi 'target' yerine 'build' altında gitmek isterseniz gradle altında 'target' olmak buildDir değiştirebilir Komut satırından (oldukça deneysel bir özellik olsa da). Maven projesinden bazı temel Gradle kurulumlarını yapmak için iyi çalışıyor gibi görünüyor.

    gradle init --type pom

    Bu build.gradle için maven pom.xml dönüştürmek gerekir

    1

    maven2Gradle gradle init çalıştırmak için güçlü olmak ile yerini almış görünüyor:

    8

    Şimdi savaş eklentisi (örneğin Gradle 1.0-milestone-6) iki ek yapılandırmayı destekler: compileProvided ve runtimeProvided.