2012-08-22 17 views
65

Çok projeli bir platform yapısında, "allprojects" bölümü ile "alt projeler" arasındaki fark nedir? Sadece ana dizin? Herkes ikisini de kullanıyor mu? Eğer öyleyse, her birinin içine tipik olarak ne konulduğunu belirleyen genel kurallarınız var mı?Tüm projeler ile alt projeler arasındaki fark nedir?

İlgili soru: (gerçekten allprojects VE alt projeleri için) iki sözdiziminden arasındaki fark nedir:

subprojects { ... 
} 

ve

configure(subprojects) { ... 
} 

zaman olur diğeri üzerinde birini?

cevap

64

Çok projeli bir platform yapısında, bir rootProject ve alt projeleriniz var. Her ikisinin kombinasyonu tüm projelerdir. RootProject, yapının başladığı yerdir. Ortak bir model bir rootProject'in kodu yoktur ve alt projeler java projeleridir. Bu durumda, yalnızca alt projeler için java eklentisi geçerlidir:

subprojects { 
    apply plugin: 'java' 
} 

Bu sadece alt modüller oluşturan bir maven agrega pom projeye eşdeğer olacaktır. İki sözdizimi ile ilgili olarak aynı şeyi yaparlar. Birincisi daha iyi görünüyor.

+0

Cevabınızı anlamaya çalışıyorum ve neden "rootProject'un kodu yok" olmasını istiyorsunuz? –

+1

Kodu olabilir ama * çoğu zaman * sadece tüm alt projeleri tek bir kök projesi altında birleştirmek içindir. – mallaudin

+1

Bu adam inşa ediyor. –

33

Ryan'ın yanıtı eklendiğinde, özel alt nesneler yapılandırmak istediğinizde configure yöntemi önemli hale gelir. Örneğin configure([project(":foo"), project(":bar")]) { ... } veya configure(tasks.matching { it.name.contains("foo") }) { ... }.

allprojects ve subprojects ne zaman kullanılmalı, koşullara bağlıdır. Genellikle ikisini de kullanırsınız. Örneğin, Java eklentisi gibi kodla ilgili eklentiler, çoğu durumda, kök projesinde herhangi bir kod bulunmadığından, genellikle subprojects'a uygulanır. Diğer yandan Eclipse ve IDEA eklentileri tipik olarak allprojects'a uygulanır. Şüpheniz varsa, örneklere ve diğer yapılara ve/veya deneylere bakın. Genel amaç, alakasız konfigürasyondan kaçınmaktır. Bu anlamda, subprojects, beklenen sonuçları verdiği sürece allprojects'dan daha iyidir.

İlgili konular