Почему подпроект jar-зависимостей включает в себя все зависимости? - PullRequest
0 голосов
/ 11 ноября 2019

Мой проект состоит из нескольких модулей, таких как core, my-backend, университета, обучения и т. Д. Core - это модуль, который требуется во всех остальных модулях. Когда я создаю сборку модуля my-backend, я вижу, что добавляется ядро ​​со всеми зависимостями, что делает этот jar-файл слишком большим. Кажется, некоторые проблемы с моим файлом Gradle, который вызывает эту проблему. Также каким-то образом application.yml из основного модуля не загружается из модуля my-backend. Есть идеи почему? Мой файл Gradle выглядит следующим образом:

buildscript {
    ext {
        springBootVersion = '2.2.1.RELEASE'
        internalUrl = 'http://internal/repository'
    }
    repositories {
        mavenLocal()
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "http://repo.spring.io/release" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.3'
        classpath 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.15'
    }
}

plugins {
    id "io.freefair.lombok" version "3.8.4" apply false
    id 'org.springframework.boot' version '2.2.1.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'maven'
    apply plugin: 'application'

    apply from: "$rootDir/dependencies.gradle"

    mainClassName = "com.myk.MyApp"
    group = 'com'
    version = app.version

    description = """"""

    sourceCompatibility = 11
    targetCompatibility = 11

    ext {
        set('springCloudVersion', "Hoxton.RC1")
    }
    repositories {
        mavenLocal()
        maven { url "http://repo.spring.io/libs-snapshot" }
        jcenter()
        mavenCentral()
        maven { url "http://repo.maven.apache.org/maven2" }
        maven { url "http://maven.aksw.org/repository/internal" }
        maven { url "https://dl.bintray.com/michaelklishin/maven/" }
    }

    configurations {
        compileOnly {
            extendsFrom annotationProcessor
        }
    }

// additional plugins
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    apply plugin: "io.freefair.lombok"

    dependencies {

        implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
        implementation 'org.springframework.boot:spring-boot-starter-web'
        implementation 'org.springframework.boot:spring-boot-starter-security'
        implementation 'org.springframework.boot:spring-boot-starter-actuator'
        implementation 'org.springframework.boot:spring-boot-starter-jdbc'
        implementation 'org.springframework.boot:spring-boot-starter-mail'
        implementation 'org.springframework.boot:spring-boot-starter-aop'
        implementation 'org.springframework.boot:spring-boot-starter-integration'
        implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

        testImplementation('org.springframework.boot:spring-boot-starter-test') {
            exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
        }
        testImplementation 'org.springframework.security:spring-security-test'
        testImplementation 'org.springframework.cloud:spring-cloud-stream-test-support'
        testImplementation (group: 'com.github.javafaker', name: 'javafaker', version: ver.'javafaker') {
            exclude group: 'org.yaml', module: 'snakeyaml'
        }
    }

    test {
        useJUnitPlatform()
    }

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

project(':core') {
    dependencies {
        implementation group: 'com.github.fommil.netlib', name: 'all', version: '1.1.2' // weka dependency
        implementation 'org.springframework.boot:spring-boot-configuration-processor:2.2.1.RELEASE'
        implementation group: 'com.google.firebase', name: 'firebase-admin', version: ver.'firebase-admin'
        implementation group: 'com.google.apis', name: 'google-api-services-gmail', version: ver.'google-api-services-gmail'
        compile "org.quartz-scheduler:quartz:${ver.quartz}"
    }
}

[
        ':university',
        ':my-backend',
        ':learning'
].each {
    project(it) {
        apply plugin: 'org.springframework.boot'
        apply plugin: 'war'
        apply plugin: 'io.spring.dependency-management'

        mainClassName = "com.myk.MyApp"

        springBoot {
            buildInfo()
        }

        dependencies {
            compile project(':core')
            providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
            testCompile group: 'io.github.swagger2markup', name: 'swagger2markup', version: ver.'swagger2markup'
        }

    }
}
...