Gradle: Dependencies und Plugins vom root Projekt für die child-Projekte verfügbar machen

von Spotz

Aktives Mitglied
Hallo,

ich brauche Hilfe dabei, wie ich die Plugins für Gradle und die Projekt-dependencies auch in den child-Projekten verfügbar mache.
Es geht vor allem erstmal um das Plugin hier: https://docs.spring.io/dependency-management-plugin/docs/current/reference/html/

Soweit ich weiß, muß dieses dafür in einen buildscript {} block und darin in einen dependencies {} block. Bzw. so ähnlich wie folgt vielleicht?
Code:
buildscript {
   
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath group: 'io.spring.gradle', name: 'dependency-management-plugin', version: '0.5.3.RELEASE'
    }
}

allprojects {
   
    repositories {
        mavenCentral()
    }

    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        implementation 'org.springframework.cloud:spring-cloud-config-server'
        implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
        developmentOnly 'org.springframework.boot:spring-boot-devtools'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }

}

Aber was mache ich dann mit dem Rest?

Code:
plugins {
    // id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'org.springframework.boot' version '2.6.3'
    id 'java'
}

group = 'com.microservicetest'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

ext {
    set('springCloudVersion', "Hoxton.SR4")
}

dependencies {

}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

Viele Grüße,
von Spotz
 
Hallo.

ich verwende die beide Blöcke : allprojects und subprojects.

Hier mal mein Beispiel :

Java:
allprojects {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11

    repositories {
        mavenCentral()
    }

    jacoco {
        toolVersion = '0.8.7'
    }
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'jacoco'
    apply plugin: 'application'
    apply plugin: 'org.springframework.boot'

    version = '1.1-SNAPSHOT'

    dependencies {
        compileOnly 'org.projectlombok:lombok:+'
        annotationProcessor 'org.projectlombok:lombok:+'
        implementation 'org.apache.logging.log4j:log4j-core:+',
                'com.google.guava:guava:+',
                'org.springframework.boot:spring-boot-starter-data-jpa:+'

        testCompileOnly 'org.projectlombok:lombok:+'
        testAnnotationProcessor 'org.projectlombok:lombok:+'
        testImplementation 'org.apache.logging.log4j:log4j-core:+',
                'org.junit.jupiter:junit-jupiter-engine:+',
                'org.junit.jupiter:junit-jupiter-params:+',
                'org.assertj:assertj-core:+'
    }
}

Hoffe es hilft dir weiter
 
Hallo bueges,

vielen Dank! Leider hilft es mir jetzt nicht so sehr weiter. Aber scheinbar braucht Gradle das Plugin für sich selber. Dafür soll das Property "buildscript" sein. Was dieses dann auch allen Unterprojekten sowie dem root Projekt selber bereitstellt. Und über
Code:
ext {
    set('springCloudVersion', "Hoxton.SR4")
}

dependencies {

}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

wird dann scheinbar über mithilfe des Plugin der Maven Bom importiert.

btw: Ist "apply plugin" nicht deprecated?

Ich würde mir ja gerne ein Buch über Gradle kaufen, momentan fehlt mir aber das Geld.

Mit besten Grüßen
von Spotz
 
Hallo Jw456

Vielen Dank für Deine Antwort. Aber es soll ja sowohl für das root Projekt verfügbar sein als auch für die Unterprojekte. Und dann ist die Frage u.a. wie oben gesagt, was ich dann mit den restlichen Properties mache. Ob das so richtig ist mit den buildingblock und allprojects.

Danke!
von Spotz
 

Zurück
Oben