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.