15

spring-boot-dependencies ve spring-boot Grapes eklentilerini kullanan çok modüllü bir projede doğru Gradle yapılandırması nasıl görünür?Çok modüllü bir sarmal bağımlılığı eklentisi Spring Boot projesi

parent 
    | 
    + build.gradle 
    | 
    + alpha 
    | | 
    | + build.gradle 
    | 
    + beta 
    | | 
    | + build.gradle 
  • parent modül ortak proje yapılandırmasını içeren:

    Aşağıdaki proje kurulum var.

  • alpha modülü, bağımlılıkları spring-boot-dependencies bomasında belirtilen sürüm numaralarını kullanarak almak istediğim bir modüldür, ancak standart bir jar sonucudur.
  • beta modülü, alpha'a bağlı bir modüldür ve sonuç, yürütülebilir bir Spring Boot jar dosyasıdır (tüm bağımlılıklar dahil). Sonuç olarak, bu projenin hem spring-boot-dependencies hem de spring-boot eklentisine ihtiyacı vardır.

Gradle dosyalarını DRY tutmak için, ebeveynin build.gradle dosyasına ortak modül komut dosyalarını ayıkladım. sonuçları aşağıda proje konfigürasyonu kullanılarak $ gradle build çalıştırmak için

girişimleri:

> Plugin with id 'io.spring.dependency-management' not found. 

üst gradle.build

allprojects { 
    group = "com.example" 
    version '0.0.1-SNAPSHOT' 

    ext { 
     dependencyManagementPluginVersion = '0.5.3.RELEASE' 
     springBootVersion = '1.3.0.RC1' 
    } 

    apply plugin: 'java' 
    apply plugin: 'eclipse' 
    apply plugin: 'idea' 
} 

subprojects { 
    sourceCompatibility = 1.8 
    targetCompatibility = 1.8 

    buildscript { 
     repositories { 
      jcenter() 
      maven { url "https://repo.spring.io/snapshot" } 
      maven { url "https://repo.spring.io/milestone" } 
     } 
     dependencies { 
      classpath("io.spring.gradle:dependency-management-plugin:${dependencyManagementPluginVersion}") 
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
     } 
    } 

    apply plugin: 'io.spring.dependency-management' 

    dependencyManagement { 
     imports { 
      mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") 
//   mavenBom("org.springframework.boot:spring-boot-starter-parent:${springBootVersion}") 
     } 
    } 
} 

alfa build.gradle

dependencies { 
    compile('org.springframework:spring-web') 
} 

beta gradle.build

apply plugin: 'spring-boot' 

dependencies { 
    compile project(':alpha') 
    compile('org.springframework.boot:spring-boot-starter') 
    compile('org.springframework.boot:spring-boot-starter-web') 
} 

Yorumlar:

  • Bahar Boot spring-boot eklenti was changed davranışı 1.3.0.M1
  • Gradle sürümü: 2.8
  • Yay Önyükleme versiyonu 1.3.0.RC1
+0

Cevabım yardımcı olduysa, lütfen onu iptal edin. – Opal

+1

@Opal Gecikme için özür dilerim, cevabınızı kabul ettiğimi düşündüm. Bir blog yazısı yazdım (http: //www.jayway.Com/2015/11/23/yeniden bahar-bot-bağımlılık yönetimi /) konuyla ilgili, lütfen onayları kontrol edin. :-) – matsev

+0

Teşekkürler, tam olarak sorun --- bu sorunu başkalarına yardımcı olmak için, ben ekleyeceğim: Eğer saf olarak deneyin: eklenti 'bahar-önyükleme' TÜM alt projelerinize uygulayın, (sadece bahar bağımlılığı elde etmek için - ücretsiz yönetim) yapı hatası alırsınız (en azından pencerenin altında kaldım): Yürütme ': xxxxx: bootRepackage' görevinde başarısız oldu. 'xxxxx.jar' ile 'xxxxx.jar.original' için yeniden adlandırılamadı – Rop

cevap

16

O parent/build.gradle şu şekilde yeniden düzenlenmesi gerekmektedir çıkıyor:

buildscript { 
    ext { 
     dependencyManagementPluginVersion = '0.5.3.RELEASE' 
     springBootVersion = '1.3.0.RC1' 
    } 
    repositories { 
     jcenter() 
     maven { url "https://repo.spring.io/snapshot" } 
     maven { url "https://repo.spring.io/milestone" } 
    } 
    dependencies { 
     classpath("io.spring.gradle:dependency-management-plugin:${dependencyManagementPluginVersion}") 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

allprojects { 
    group = "com.example" 
    version '0.0.1-SNAPSHOT' 

    apply plugin: 'java' 
    apply plugin: 'eclipse' 
    apply plugin: 'idea' 
} 

subprojects { 
    sourceCompatibility = 1.8 
    targetCompatibility = 1.8 

    apply plugin: 'io.spring.dependency-management' 

    dependencyManagement { 
     imports { 
      mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") 
//   mavenBom("org.springframework.boot:spring-boot-starter-parent:${springBootVersion}") 
     } 
    } 
} 

sorun alt projeleri için buildscript blok gerçekten iyi yapılandırılmış ancak gerçeği yatar. .. yanlış bir yerde. Bu subprojects bloğu alt projelerle ilgilidir, ancak kod dosyasında olarak değerlendirilecek ve bildirilmeye çalışıldığı eklenti için herhangi bir bağımlılık bildirilmemiştir.

+1

Teşekkürler, ama işe yaramıyor. Şimdi Gradle alt modüller için depo bulmakta başarısız oluyor: '> Harici bağımlılık çözümlenemiyor org.springframework.boot: spring-boot-bağımlılıkları: 1.3.0.RC1 hiçbir havuz tanımlanmadığı için. Zorunlu: com.örnek: alpha: 0.0.1-SNAPSHOT' "Depolar" ile "allprojects" öğesinin kopyalanması sorunu çözer, ancak 'depoları' tanımlamak için bir yol var. buildscript ve allprojects? – matsev

+0

Hayır:/Maalesef, bunlar ayrı konfigürasyonlardır. Çoğaltılması gerekiyor. – Opal

İlgili konular