Как исправить проблемы с зависимостями в многопроектных сборочных системах - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь выполнить чистую сборку gradle для подпроекта Alpha, который зависит от подпроекта Astrix и build.gradle подпроекта Alpha, выглядит следующим образом

group 'com.loyalty.alpha'
version '0.7.23'

repositories {
maven { url "https://repository.cloudera.com/artifactory/repo/" }
maven {
    credentials {
        username "${nexusUsername}"
        password "${nexusPassword}"
    }
    url "https://nexus.loyalty.com/nexus/content/groups/public/"
}
}

dependencies {
compile project (':Astrix')
compile group: 'org.scalaj', name: 'scalaj-http_2.11', version: '2.3.0'
compile group: 'com.loyalty.rewards', name: 'DataModelling', version: '0.1.5'


 //Shortcut which works but bad way of doing it.
//compile fileTree(dir:'../Astrix/build/libs',include: ['Astrix-0.0.7.jar'])
//compile group: 'org.rogach', name: 'scallop_2.11', version: '2.1.1'


testCompile "org.specs2:specs2-core_$versions.scala_major:3.6.6"
testCompile "org.specs2:specs2-junit_$versions.scala_major:3.6.6"
}

build.gradle подпроекта Astrix, для которого Alphaзависит от того, как показано ниже

group 'com.loyalty.sessions'
version '0.0.7'

repositories {
maven { url "https://repository.cloudera.com/artifactory/repo/" }
maven {
    credentials {
        username "${nexusUsername}"
        password "${nexusPassword}"
    }
    url "https://nexus.loyalty.com/nexus/content/groups/public/"
}
}

dependencies {
compile group: 'org.rogach', name: 'scallop_2.11', version: '2.1.1'

//compile group: 'org.scalaj', name: 'scalaj-http_2.10', version: 
"2.3.0"
}

Но когда я вхожу в каталог подпроекта Alpha и выполняю чистую сборку gradle, это выдает ошибку ниже и указывает на отсутствие зависимостей от проекта Astrix.

* What went wrong:
Execution failed for task ':Alpha:compileScala'.
> Compilation failed

Я не уверен, что делаю не так.Я включил подпроект в родительский файл settings.gradle, но он все еще не работает.

Мой основной проект build.gradle выглядит следующим образом

buildscript {
repositories {
    maven {
        credentials {
            username "${nexusUsername}"
            password "${nexusPassword}"
        }
        url "https://nexus.artifactory.com/nexus/content/groups/public/"
    }
}
dependencies {
    classpath "com.loyalty.blender:blender-nexus-plugin:0.2.1"
    classpath "com.github.jengelman.gradle.plugins:shadow:1.2.3"

    classpath 'com.github.skhatri:gradle-s3-plugin:1.0.4'
    classpath 'joda-time:joda-time:2.4'
}
}

allprojects {
apply plugin: 'idea'
}

task wrapper(type: Wrapper) {
   gradleVersion = '4.1' //version required
}


subprojects {
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'scala'
apply plugin: 'blender.nexus'
apply plugin: "com.github.johnrengelman.shadow"
apply plugin: 's3'

sourceCompatibility = 1.6

ext {
    versions = [
            scala: '2.11.8',
            scala_major: '2.11',
            spark: '2.1.0',
            avro: '1.7.7'
    ]
}

build.dependsOn clean
compileScala.mustRunAfter clean

configurations.create('shadowConfigurations')


shadowJar {
    zip64 = true
    exclude 'META-INF/**'
    //entryCompression = org.gradle.api.tasks.bundling.ZipEntryCompression.STORED
    configurations = [project.configurations.shadowConfigurations]
}.dependsOn(build)

dependencies {
    compile group: 'org.scala-lang', name: 'scala-library', version: '2.11'

    compile group: 'org.apache.spark', name: "spark-core_$versions.scala_major", version: "$versions.spark"
    compile group: 'org.apache.spark', name: "spark-sql_$versions.scala_major", version: "$versions.spark"
    compile group: 'org.apache.spark', name: "spark-mllib_$versions.scala_major", version: "$versions.spark"

    compile group: 'org.postgresql', name: 'postgresql', version: '9.4.1208'
    compile group: 'joda-time', name: 'joda-time', version: '2.9.4'
    compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.7'

    compile group: 'com.loyalty.data', name:  'utils', version: "0.6.18"

    testCompile group: 'junit', name: 'junit', version: '0.4.12'

    testCompile "org.specs2:specs2-core_$versions.scala_major:3.6.6"
    testCompile "org.specs2:specs2-junit_$versions.scala_major:3.6.6"
}

configurations {
    /* We don't want the spark dependencies in our shadowJar */
    shadowConfigurations.extendsFrom runtime
    shadowConfigurations.exclude module: "spark-core_$versions.scala_major"
    shadowConfigurations.exclude module: "spark-sql_$versions.scala_major"
    shadowConfigurations.exclude module: "spark-mllib_$versions.scala_major"
    shadowConfigurations.exclude module: "aws-java-sdk"
}

idea {
    module {
        //downloadJavadoc = true
        downloadSources = true
    }
}

}

Это настройка мультипроекта иструктура проекта:

RewardsProject
    README.md
    PreferredSMS
    bin
    cluster_spoolup
    crontab
    deploy
    gradle.properties
    gradlew
    gradlew.bat
    sparkprod
    gradle
    build.gradle
    PreferredByCampaign
    ClubSeries
    DataModelling
    target
    Social
    settings.gradle
    Astrix
    Magnifier
    Picture
    Alpha
    GoogleAdwords
    HelloWorld
    PreferredCampaigns

Мой файл settings.gradle выглядит следующим образом

include 'PreferredByCampaign','PreferredCampaigns','ClubSeries', 'Social', 'HelloWorld', 'Alpha', 'Astrix', 'DataModelling', 'Magnifier','GoogleAdwords','Picture'

Но если я сделаю чистую сборку gradle для проекта Astrix, а затем включу файл jar, сгенерированный из этогопостроить в сборке Alpha build.gradle, как показано ниже, тогда он работает.Но это не устойчивый путь.

//Shortcut which works but bad way of doing it.
//compile fileTree(dir:'../Astrix/build/libs',include: ['Astrix-0.0.7.jar'])
//compile group: 'org.rogach', name: 'scallop_2.11', version: '2.1.1'

Было бы очень полезно, если бы кто-нибудь мог помочь мне в этом.Если это сработает, то остальные проекты будет легко сделать gradle build.Но в настоящее время я застрял здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...