Извлечь дубликаты плагинов из подпроектов в корневую конфигурацию gradle

У меня есть эта структура проекта:

-root-project
 -settings.gradle
 -build.gradle
 -subProjectA(spring-boot)
  -build.gradle
 -subprojectB(spring-boot)
  -build.gradle
 -subprojectC(spring-boot)
  -build.gradle
 -commonProject(java library)
  -build.gradle

Это просто мои корневые настройки. gradle:

rootProject.name = 'root-project'
include 'subProjectA'
include 'subprojectB'
include 'subprojectC'
include 'commonProject'

Это мой корневой проект build.gradle:

group = 'my.domain'
version = '0.0.1-SNAPSHOT'

ext {
    springBootVersion = '2.1.3.RELEASE'
    cxfVersion = '3.2.7'
    uuidGeneratorVersion = '3.1.5'
    commonLang3Version = '3.7'
    encacheVersion = '2.6.11'
    logstashVersion = '5.2'
}

И в каждом подпроекте у меня есть build.gradle файла с этими плагинами:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'eclipse'

У меня есть дубликаты плагинов и spring-boot зависимости в каждом subModule, и я хочу переместить их в общий (корневой) файл. Но я не понимаю, как я могу это сделать.


person ip696    schedule 03.04.2019    source источник


Ответы (1)


В корневом файле build.gradle вы можете применять общие плагины или другие конфигурации, такие как общие задачи, sourceCompatibility и targetCompatibility, информацию о манифесте, тестовые конфигурации и т. д., используя блок subprojects, как показано ниже.

subprojects {
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'idea'
    apply plugin: 'java'
    apply plugin: 'eclipse'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    jar {
        manifest {
            attributes (
                'Built-By'       : System.properties['user.name'],
                'Build-Timestamp': new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(new Date()),
                'Created-By'     : "Gradle ${gradle.gradleVersion}",
                'Build-Jdk'      : "${System.properties['java.version']} (${System.properties['java.vendor']} ${System.properties['java.vm.version']})",
                'Build-OS'       : "${System.properties['os.name']} ${System.properties['os.arch']} ${System.properties['os.version']}"
            )
        }
    }

   // Other Configs
}
person user3038039    schedule 03.04.2019