Aynı dosyada proje adı / grubu / sürümü artı {kaynak, hedef} uyumluluğu nasıl ayarlanır?


84

Projelerim için gradle kullanımını genelleştirmek niyetindeyim ve aynı yapı dosyasını her yerde yeniden kullanmak istiyorum. Maalesef geçişi kolaylaştırmak için $ subject'de belirtilen özellikleri tek bir dosyada tanımlamaya çalışırken sorun yaşıyorum.

Bu derece 1.6.

Denediğim şey, tüm girişimlerde başarısızlıkla:

  • gradle.properties: adı değiştirilemez (salt okunur, a kullanmalı settings.gradleve kök proje adını geçersiz kılmalı !); {source,target}Compatibilitydikkate alınmaz;
  • settings.gradle: {source,target}Compatibilityhesaba katılmaz!

Peki bunu başarmanın doğru yöntemi nedir? Şimdiye kadar denediğim şey gradle.properties:

group = something
name = whatever  # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!

Ve içinde settings.gradle:

sourceCompatibility = "whatever";  # not taken into account!

DÜZENLE Pekala, "isim" problemi çözülemiyor; geri kalanı için, yapı dosyasına uyguladığım başka bir dosya kullandım. "İsim" kullanımı gerçekten doğru değil: /

DÜZENLEME 2 Bu şimdi 2014 ve 1.12.


1
Bilginize, build.gradle dosyasındaki proje adının özelleştirilememesi şu anda bir iyileştirme isteğidir: issue.gradle.org//browse/GRADLE-2412 .
Ryan Nelson

Yanıtlar:


127

gradle.properties:

theGroup=some.group
theName=someName
theVersion=1.0
theSourceCompatibility=1.6

settings.gradle:

rootProject.name = theName

build.gradle:

apply plugin: "java"

group = theGroup
version = theVersion
sourceCompatibility = theSourceCompatibility

Yani yapılarda yeniden kullanmak mı istiyorsunuz? Yapabilirsin apply from: "other.gradle"veya apply from: "http://my.server.com/other.gradle". İkincisinin şu anda önbelleğe alınmadığını unutmayın. Önbelleğe almak için ikili bir eklenti yazmanız gerekir .
Peter Niederwieser

Evet, apply from:çözümü kullanıyorum; ancak bu ad sorununu çözmez :(
fge

1
Sanırım en son Gradle'da bir eklenti de uygulayabilirsiniz settings.gradle. Ancak, derlemelerde aynı proje adını ayarlamak için bir eklenti kullanmak biraz garip görünüyor.
Peter Niederwieser

Tüm bu özellikleri init.gradlekullanıcı evinizdeki bir öğesinden de ayarlamanın mümkün olduğunu unutmayın (bkz. Kullanım kılavuzu).
Peter Niederwieser

1
Gradle.properties dosyasında değişkenler tanımlamanız ve settings.gradle içinde kullanmanız gerekmez. Sadece settings.gradle rootProject.name = "someName" bölümünde bahsedebilirsiniz. Settings.gradle'da çift tırnak içinde belirttiğinizden emin olun.
Gopinath MR

22

Benzer bir sorunun çözümünü buldum. Gradle 1.11 kullanıyorum (Nisan 2014 olarak). Proje adı aşağıdaki şekilde doğrudan settings.gradledosyada değiştirilebilir :

  rootProject.name='YourNewName'

Bu, doğru artifactId ile depoya (benim için eklentisi ile Artifactory) yüklemeyi halleder.


2
Bu çözüm, çok projeli yapılar için idealden daha azdır.
asandroq

@asandroq, yalnızca tek bir ayar dosyasına sahip olabileceğiniz için alt modülü buradan yeniden adlandırmanız gerekecektir. Merkezi ama işe yarıyor.
Snicolas

19

Artifact baseName'i inşa projesi adından bağımsız olacak şekilde ayarladım, bu da istediğiniz şeyi elde etmeme izin veriyor:

jar {
    baseName "core"
}

Bu özellik setiyle, proje adım "foo" olsa bile, çalıştırdığımda yapı gradle install, coreyerine adıyla yayınlanıyor foo.


1
Proje adını kullanan diğer tüm görevlere yardımcı olmaz ve çakışan adlar üzerinde ek kafa karışıklığı yaratabilir ...
Quartz

4

Görünüşe göre bu settings.gradleböyle bir şeyle mümkün olabilirdi .

rootProject.name = 'someName'
gradle.rootProject {
    it.sourceCompatibility = '1.7'
}

Yakın zamanda bir proje mülkünün daha sonra Proje uygun olduğunda çağrılacak olan bir kapatma kullanılarak ayarlanabileceği konusunda tavsiye aldım.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.