так что я думаю, я наконец понял:
ear/build.gradle
должно быть так:
plugins {
id 'java'
id 'ear'
}
dependencies {
/* jars */
earlib project(path: ':jar1')
earlib project(path: ':jar1', configuration: 'compile')
earlib project(path: ':jar2')
earlib project(path: ':jar2', configuration: 'compile')
/* wars */
deploy project(path: ':war1', configuration: 'archives')
earlib project(path: ':war1', configuration: 'earshared')
deploy project(path: ':war2', configuration: 'archives')
earlib project(path: ':war2', configuration: 'earshared')
}
таким образом мы получим war
s в root в архиве .ear
зависимости earshared
помещаются в каталог /lib
.
Артефакты jar1
и jar2
и их зависимости также помещаются в /lib
earshared
- это пользовательская конфигурация, в которой build.gradle войн выглядит следующим образом:
configurations {
earshared
}
apply plugin: 'war'
jar.enabled = true
description = 'war1'
dependencies {
providedCompile project(':jar1')
providedCompile project(':jar2')
earshared group: 'org.example', name: 'third-party3', version:'1.0.0'
}
sourceSets {
main { compileClasspath += configurations.earshared }
}
, а build.gradle jars выглядит так:
description = 'jar1'
dependencies {
compile group: 'org.example', name: 'third-party1', version:'2.6.0'
compile group: 'org.example', name: 'third-party2', version:'2.6.0'
}