Jak wygląda poprawna konfiguracja Gradle w projekcie wielomodułowym, który korzysta z wtyczek Gradle spring-boot-dependencies
i spring-boot
?Wtyczka zależności Gradle w wielomodułowym projekcie Spring Boot
Mam następującą konfigurację projektu:
parent
|
+ build.gradle
|
+ alpha
| |
| + build.gradle
|
+ beta
| |
| + build.gradle
- Moduł
parent
zawiera wspólną konfigurację projektu. - Moduł
alpha
to moduł, w którym chciałbym zaimportować zależności używając numerów wersji podanych w bom spring-boot-dependencies, ale wynikiem jest standardowy słoik. - Moduł
beta
jest modułem, który zależy odalpha
, a wynikiem jest wykonywany plik jar Spring Boot (zawierający wszystkie zależności). W związku z tym projekt ten wymaga zarówno wtyczkispring-boot-dependencies
, jak i wtyczkispring-boot
.
Aby zachować pliki Gradle DRY, wyodrębniłem wspólne skrypty modułów do pliku rodzica build.gradle
.
próbuje wykonać $ gradle build
wykorzystując konfigurację projektu poniżej wyniki w:
> Plugin with id 'io.spring.dependency-management' not found.
dominująca 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')
}
Komentarze:
- Zachowanie
spring-boot
wtyczki was changed w Spring Boot 1.3.0.M1 - wersja Gradle: 2.8
- Wiosna Boot version 1.3.0.RC1
Jeśli moja odpowiedź była pomocna, należy ją odebrać. – Opal
@Opal Przepraszam za opóźnienie, myślałem, że przyjąłem twoją odpowiedź. Napisałem [post na blogu] (http: //www.jayway.com/2015/11/23/reusing-spring-boots-dependency-management /) w tej sprawie, sprawdź potwierdzenia. :-) – matsev
Dzięki, dokładnie ten problem, który miałem --- aby pomóc innym w googlowaniu tego problemu, dodam: Jeśli naiwnie spróbujesz: zastosuj plugin 'spring-boot' do WSZYSTKICH twoich podprojektów, (tylko w celu uzyskania zależności od wiosny -management za darmo) otrzymasz błąd kompilacji (przynajmniej dostałem się pod oknami), jak: Wykonanie nie powiodło się dla zadania ": xxxxx: bootRepackage". Nie można zmienić nazwy "xxxxx.jar" na "xxxxx.jar.original" – Rop