Я пытаюсь выполнить чистую сборку 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.Но в настоящее время я застрял здесь.