blob: f74a32cb226263e5a1926aba605b8d763e897549 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
boolean isUsingBintray = rootProject.hasProperty('bintrayUser') && rootProject.bintrayUser &&
rootProject.hasProperty('bintrayPassword') && rootProject.bintrayPassword
if (isUsingBintray) {
logger.lifecycle 'Deployment environment set to Bintray'
}
def removeJarjaredDependencies = { p ->
p.dependencies.removeAll(p.dependencies.findAll {
it.groupId == 'org.codehaus.groovy' ||
(['asm', 'asm-util', 'asm-analysis', 'asm-tree', 'asm-commons', 'antlr', 'commons-cli', 'openbeans'].contains(it.artifactId))
})
}
allprojects {
apply plugin: 'maven'
apply from: "${rootProject.projectDir}/gradle/pomconfigurer.gradle"
}
apply from: 'gradle/backports.gradle'
allprojects {
configurations {
deployerJars
}
uploadArchives {
repositories {
mavenDeployer {
configuration = configurations.deployerJars
pom pomConfigureClosure
}
}
}
install {
repositories {
mavenInstaller {
pom pomConfigureClosure
}
}
}
artifacts {
archives jar
archives sourceJar
archives javadocJar
archives groovydocJar
}
[uploadArchives, install]*.with {
// dependency on jarAllAll should in theory be replaced with jar, jarWithIndy but
// in practice, it is faster
dependsOn([jarAllAll, sourceJar, javadocJar, groovydocJar])
doFirst {
if (rootProject.useIndy()) {
new GradleException('You cannot use uploadArchives or install task with the flag [indy] turned'
+' on because the build handles indy artifacts by itself in that case.')
}
def archive = jar.archivePath
def indyJar = new File(archive.parent, archive.name[0..archive.name.lastIndexOf('.')-1]+'-indy.jar')
if (indyJar.exists()) {
project.artifacts.add('archives', indyJar)
}
def grooidJar = new File(archive.parent, archive.name[0..archive.name.lastIndexOf('.')-1]+'-grooid.jar')
if (grooidJar.exists()) {
project.artifacts.add('archives', grooidJar)
}
}
}
}
// the root project generates an alternate 'groovy-all' artifact
[uploadArchives, install]*.with {
dependsOn([sourceAllJar, javadocAllJar, groovydocAllJar, distBin])
doFirst {
project.artifacts.add('archives', jarAll)
project.artifacts.add('archives', sourceAllJar)
project.artifacts.add('archives', javadocAllJar)
project.artifacts.add('archives', groovydocAllJar)
project.artifacts.add('archives', distBin)
tasks.withType(Jar).matching { it.name.startsWith('backport') }.each { t ->
project.artifacts.add('archives', t.archivePath) {
name = t.baseName
type = 'jar'
}
}
def archive = jarAll.archivePath
def indyJar = new File(archive.parent, archive.name[0..archive.name.lastIndexOf('.')-1] + '-indy.jar')
if (indyJar.exists()) {
project.artifacts.add('archives', indyJar)
}
def grooidJar = new File(archive.parent, archive.name[0..archive.name.lastIndexOf('.')-1]+'-grooid.jar')
if (grooidJar.exists()) {
project.artifacts.add('archives', grooidJar)
}
}
}
ext.pomAll = {
addFilter('groovy') { artifact, file ->
!(artifact.name.contains('groovy-all')) && !(artifact.name.contains('groovy-binary')) && !(artifact.name.contains('backport'))
}
addFilter('all') { artifact, file ->
artifact.name.contains('groovy-all')
}
addFilter('binary') { artifact, file ->
artifact.name.contains('groovy-binary')
}
project.backports.each { pkg, classes ->
addFilter("backports-$pkg") { artifact, file ->
artifact.name == "groovy-backports-$pkg"
}
}
// regular pom
def groovypom = pom('groovy', pomConfigureClosure)
// pom for 'all'
def allpom = pom('all', pomConfigureClosure)
allpom.artifactId = 'groovy-all'
// pom for binary zip
def binarypom = pom('binary', pomConfigureClosureWithoutTweaks)
binarypom.artifactId = 'groovy-binary'
// poms for backports
project.backports.each { pkg, classes ->
String id = "backports-$pkg"
def backportPom = pom(id, pomConfigureClosureWithoutTweaks)
backportPom.artifactId = "groovy-$id"
backportPom.whenConfigured { p ->
p.dependencies.clear()
}
}
modules().each { sp ->
sp.install.repositories.mavenInstaller.pom.whenConfigured { subpom ->
// add dependencies of other modules
allpom.dependencies.addAll(subpom.dependencies)
}
sp.uploadArchives.repositories.mavenDeployer.pom.whenConfigured { subpom ->
// add dependencies of other modules
allpom.dependencies.addAll(subpom.dependencies)
}
}
groovypom.whenConfigured(removeJarjaredDependencies)
allpom.whenConfigured(removeJarjaredDependencies)
binarypom.whenConfigured { p ->
p.dependencies.clear()
}
}
install {
// make sure dependencies poms are built *before* the all pom
dependsOn(modules()*.install)
repositories {
mavenInstaller pomAll
}
}
uploadArchives {
// make sure dependencies poms are built *before* the all pom
dependsOn(modules()*.uploadArchives)
repositories {
mavenDeployer pomAll
}
}