blob: 72ad0d8e1325d5006b4942bb128a344060d41add [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.
*/
apply from: "${rootDir}/gradle/publish-common.gradle"
apply from: "${rootDir}/gradle/publish-artifacts.gradle"
publishing {
publications {
maven(MavenPublication) {
from components.java
// use the (possibly empty) Jar tasks above for sources and javadoc
artifact sourcesJar
artifact javadocJar
}
}
}
gradle.taskGraph.whenReady({ graph ->
tasks.withType(Jar).each { jar ->
jar.doFirst {
def projectDependencies = []
def runtimeList = []
// Iterate over runtime classpath dependencies and separate project dependencies from library
// dependencies.
configurations.runtimeClasspath
.collect { it.name - ".jar" }
.each { dependency ->
if (dependency.startsWith("geode-")) {
projectDependencies.add(dependency)
} else {
runtimeList.add(dependency+".jar")
}
}
// Iterate over project (parent) dependencies and remove its runtime library dependencies from
// the current project's runtime library dependencies.
// Also removes all parent project's runtime project dependencies from the current project.
// This returns a unique set of parent project and library dependencies that are not found
// within it's parent's project dependencies.
projectDependencies.clone().each { projectDependency ->
def geodeProject = projectDependency - "-${version}.jar"
if (projectDependencies.contains(geodeProject)) {
def parentProject = project(":$geodeProject" - "-$version")
if (parentProject != null) {
def collect = parentProject.configurations.runtimeClasspath.collect { it.name }
runtimeList.removeAll(collect)
projectDependencies.removeAll(collect.collect {it-".jar"})
}
}
}
manifest {
attributes.put("Class-Path", runtimeList.join(' '))
attributes.put("Dependent-Modules", projectDependencies.join(' '))
attributes.put("Module-Name", project.name)
}
}
}
})