blob: 6bb45a614e9365910301711f5ed4c154899a3f0b [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.
*/
buildscript {
repositories {
mavenCentral()
}
}
plugins {
id 'com.google.protobuf'
id 'java'
id "com.github.vlsi.stage-vote-release" version "1.73"
id 'checkstyle'
id 'org.nosphere.apache.rat'
id 'com.github.spotbugs'
}
subprojects {
task allDeps(type: DependencyReportTask) {}
}
apply from: "$rootDir/version.gradle"
version = buildVersion
releaseArtifacts {
fromProject("bookkeeper-dist")
fromProject("bookkeeper-dist-all")
fromProject("bookkeeper-dist-bkctl")
fromProject("bookkeeper-dist-server")
}
releaseParams { // ReleaseExtension
tlp.set("Bookkeeper")
componentName.set("Apache Bookkeeper")
releaseTag.set("release-$buildVersion")
rcTag.set(rc.map { "release-$buildVersion-rc$it" })
sitePreviewEnabled.set(false)
nexus {
packageGroup.set("org.apache.bookkeeper")
}
}
allprojects {
apply from: "$rootDir/dependencies.gradle"
if (it.path != ':circe-checksum:src:main:circe'
&& it.path != ':cpu-affinity:src:main:affinity'
&& it.name != 'src'
&& it.name != 'main') {
apply plugin: 'java'
apply plugin: 'maven-publish'
apply plugin: 'signing'
apply plugin: 'org.nosphere.apache.rat'
apply plugin: "checkstyle"
apply plugin: 'com.github.spotbugs'
checkstyle {
toolVersion "${checkStyleVersion}"
configFile file("$rootDir/buildtools/src/main/resources/bookkeeper/checkstyle.xml")
checkstyleMain {
source ='src/main/java'
}
checkstyleTest {
source ='src/test/java'
}
}
spotbugs {
toolVersion = '3.1.8'
excludeFilter = file("$rootDir/buildtools/src/main/resources/bookkeeper/findbugsExclude.xml")
reportLevel = 'high'
}
task testJar(type: Jar, dependsOn: testClasses) {
classifier = 'tests'
from sourceSets.test.output
}
// TODO- Seperate rat plugins and other plugins configuration in seperate files
rat {
excludes = [
'**/.*/**',
'**/*.ipr',
'**/out/**',
'**/generated/**',
'**/build/**',
'**/.idea/**',
'.git/**/*',
'.github/**/*',
'**/.gitignore',
'**/.svn/**/*',
'**/target/**/*',
'**/README.md',
'**/README.rst',
'**/apidocs/*',
'**/src/main/resources/deps/**',
'**/META-INF/**',
'**/.classpath',
'**/.project',
'**/.checkstyle',
'**/.settings/*',
'**/*.iml',
'**/*.iws',
'**/*.ipr',
'site/**',
'site2/**',
'**/*.log',
'data/**',
'dev/.vagrant/**',
'**/proto/**.py',
'**/keyStoreClientPassword.txt',
'**/keyStoreServerPassword.txt',
'**/proc_cpuinfo.txt',
'**/__pycache__/**',
'**/bookkeeper.egg-info/**',
'**/apache_bookkeeper_client.egg-info/**',
'**/pip-selfcheck.json',
'**/test_conf_2.conf'
]
}
configurations {
testArtifacts.extendsFrom testRuntime
}
artifacts {
testArtifacts testJar
}
plugins.withType(DistributionPlugin) {
distTar {
compression = Compression.GZIP
archiveExtension = 'tar.gz'
}
}
javadoc {
options.addBooleanOption('Xdoclint:none', true)
includes = [
'**/org/apache/bookkeeper/client/api/**',
'**/org/apache/bookkeeper/common/annotation/**',
'**/org/apache/bookkeeper/conf/**',
'**/org/apache/bookkeeper/feature/**',
'**/org/apache/bookkeeper/stats/**',
]
}
def componentName = it.name
publishing {
publications {
maven(MavenPublication) {
groupId = 'org.apache.bookkeeper'
artifactId = componentName
version = buildVersion
from components.java
}
}
}
signing {
def skipSigning = project.hasProperty('skipSigning') && skipSigning.toBoolean()
def shouldSign = !skipSigning
if (shouldSign) {
if (project.hasProperty("singingKey")) {
// The following allow the secretKey and password to be specified using env var
// This is mainly for the CI system.
// * ORG_GRADLE_PROJECT_signingKey
// * ORG_GRADLE_PROJECT_signingPassword
// * ORG_GRADLE_PROJECT_signingKeyId
// See https://docs.gradle.org/current/userguide/signing_plugin.html#sec:in-memory-keys
// for details
def signingKey = findProperty("signingKey")
def signingKeyId = findProperty("signingKeyId")
def signingPassword = findProperty("signingPassword")
if (signingKeyId && signingKey && signingPassword) {
useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword)
} else if (signingKey && signingPassword) {
useInMemoryPgpKeys(signingKey, signingPassword)
}
}
// Signing task is added by the release plugin
}
}
test {
String testGroup = System.properties['testGroup']
if (testGroup == 'client') {
include '**/client/*'
} else if (testGroup == 'bookie') {
include '**/bookie/*'
} else if (testGroup == 'other') {
exclude '**/client/*'
exclude '**/bookie/*'
}
if (project.hasProperty('excludeTests')) {
exclude project.property('excludeTests')
}
}
}
repositories {
mavenCentral()
}
}
pluginManager.withPlugin('java') {
sourceCompatibility = targetCompatibility = 8
}