/* * 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. */ if (project.hasProperty('release') && jdkVersion != '11') { throw new GradleException("Releases must be built with Java 11") } subprojects { def isBom = it.name == 'iceberg-bom' def isOpenApi = it.name == 'iceberg-open-api' apply plugin: 'maven-publish' apply plugin: 'signing' afterEvaluate { if (!isBom) { task sourceJar(type: Jar, dependsOn: classes) { archiveClassifier.set('sources') from sourceSets.main.allSource group 'build' } task javadocJar(type: Jar, dependsOn: javadoc) { archiveClassifier.set('javadoc') from javadoc.destinationDir group 'build' } task testJar(type: Jar) { archiveClassifier.set('tests') from sourceSets.test.output } artifacts { archives sourceJar archives javadocJar archives testJar testArtifacts testJar } // add LICENSE and NOTICE [jar, sourceJar, javadocJar, testJar].each { task -> task.dependsOn rootProject.tasks.buildInfo task.from("${rootDir}/build") { include 'iceberg-build.properties' } task.from(rootDir) { include 'LICENSE' include 'NOTICE' } } } publishing { publications { apache(MavenPublication) { if (isBom) { from components.javaPlatform } else if (isOpenApi) { artifact testJar artifact testFixturesJar artifact shadowJar } else { if (tasks.matching({task -> task.name == 'shadowJar'}).isEmpty()) { from components.java } else { project.shadow.component(it) } artifact sourceJar artifact javadocJar artifact testJar versionMapping { allVariants { fromResolutionResult() } } } groupId = 'org.apache.iceberg' pom { name = 'Apache Iceberg' description = 'A table format for huge analytic datasets' url = 'https://iceberg.apache.org' licenses { license { name = 'The Apache Software License, Version 2.0' url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } mailingLists { mailingList { name = 'Dev Mailing List' post = 'dev@iceberg.apache.org' subscribe = 'dev-subscribe@iceberg.apache.org' unsubscribe = 'dev-unsubscribe@iceberg.apache.org' } } issueManagement { system = 'GitHub' url = 'https://github.com/apache/iceberg/issues' } } } } repositories { maven { credentials { username project.hasProperty('mavenUser') ? "$mavenUser" : "" password project.hasProperty('mavenPassword') ? "$mavenPassword" : "" } // upload to the releases repository using ./gradlew -Prelease publish def apacheSnapshotsRepoUrl = 'https://repository.apache.org/content/repositories/snapshots' def apacheReleasesRepoUrl = 'https://repository.apache.org/service/local/staging/deploy/maven2' def snapshotsRepoUrl = project.hasProperty('mavenSnapshotsRepo') ? "$mavenSnapshotsRepo" : "$apacheSnapshotsRepoUrl" def releasesRepoUrl = project.hasProperty('mavenReleasesRepo') ? "$mavenReleasesRepo" : "$apacheReleasesRepoUrl" url = project.hasProperty('release') ? releasesRepoUrl : snapshotsRepoUrl } } } if (project.hasProperty('release')) { signing { useGpgCmd() sign publishing.publications.apache } } } }