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



## von Spotz (17. Feb 2022)

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?

```
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?


```
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


----------



## 8u3631984 (17. Feb 2022)

Hallo.

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

Hier mal mein Beispiel : 


```
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


----------



## von Spotz (17. Feb 2022)

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

```
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


----------



## Jw456 (17. Feb 2022)

Hallo Schaue doch mahl bei marven wie du deine libs einbinden kannst. 
Auch Gradle ist da aufgelistet. 






						Maven Repository: org.springframework.boot » spring-boot-starter-web » 2.6.3
					






					mvnrepository.com
				





```
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.6.3'
```


----------



## von Spotz (18. Feb 2022)

Hallo Jw456
das ist ja eine dependency für die artefakte, die ich selber produziere.


----------



## von Spotz (18. Feb 2022)

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


----------

