blob: 8c75e127de9b6a443c17ea05629962b12932421e [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.
*/
//This need for resolving plugins in buildscripts
plugins {
id('idea')
alias(libs.plugins.ideaext)
alias(libs.plugins.javacc) apply false
alias(libs.plugins.aggregateJavadoc)
alias(libs.plugins.spotbugs) apply false
alias(libs.plugins.jmh) apply false
alias(libs.plugins.jmhReport) apply false
alias(libs.plugins.dockerRemoteApi) apply false
}
apply from: "$rootDir/buildscripts/javadoc.gradle"
repositories {
mavenCentral()
}
ext {
repos = [
'apache-release' : "https://repo.maven.apache.org/maven2/",
'apache-snapshot': "https://repository.apache.org/snapshots",
'apache-staging' : 'https://repository.apache.org/service/local/staging/deploy/maven2'
]
addOpens = [
"--add-opens=java.base/java.lang=ALL-UNNAMED",
"--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
"--add-opens=java.base/java.lang.reflect=ALL-UNNAMED",
"--add-opens=java.base/java.io=ALL-UNNAMED",
"--add-opens=java.base/java.nio=ALL-UNNAMED",
"--add-opens=java.base/java.math=ALL-UNNAMED",
"--add-opens=java.base/java.util=ALL-UNNAMED",
"--add-opens=java.base/java.time=ALL-UNNAMED",
"--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED",
"--add-opens=java.base/jdk.internal.access=ALL-UNNAMED",
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED",
"--add-opens=java.base/sun.security.x509=ALL-UNNAMED",
]
defaultJvmArgs = addOpens + [
"-Dio.netty.tryReflectionSetAccessible=true",
"-XX:+HeapDumpOnOutOfMemoryError",
"-ea",
"-Xmx1g"
]
compilerArgs = [
"--add-exports=java.base/sun.nio.ch=ALL-UNNAMED",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED"
]
product = "Apache Ignite"
projectVersion = project.hasProperty('projectVersion') ? project.property('projectVersion') : '3.0.0-SNAPSHOT'
def versionPattern = '\\d+\\.\\d+\\.\\d+(?:\\.(\\d+))?(?:-[0-9A-Za-z]+)?'
if (!projectVersion.matches(versionPattern)) {
throw new GradleException("Project version $projectVersion doesn't conform to the semver format")
}
}
allprojects {
group 'org.apache.ignite'
version = projectVersion
tasks.withType(Jar).configureEach {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType(Test).configureEach {
defaultCharacterEncoding = 'UTF-8'
def extraJvmArgs = []
if (project.hasProperty('extraJvmArgs')) {
extraJvmArgs = project.property('extraJvmArgs')
.toString()
.trim()
.split(/\s+/) // Split on whitespace
.toList()
}
jvmArgs += defaultJvmArgs + extraJvmArgs
systemProperty 'jraft.available_processors', 1
if (project.hasProperty('excludeTest')) {
exclude project.property('excludeTest')
}
def dockerVersion = findProperty("migration-tools.docker.version")
systemProperty "migration-tools.docker.version", dockerVersion != null ? dockerVersion : project.version
[
"tests.containers.support",
"e2e.testLimiter",
"ai2.sampleCluster.Xmx",
"ai2.sampleCluster.checkpointChecker.maxwaitseconds",
"ai2.sampleCluster.checkpointChecker.pollingseconds",
"ai2.sampleCluster.recreate.seeding.maxwaitseconds",
"ai2.sampleCluster.recreate.seeding.pollingseconds",
"seeddata.nCachesPerStint",
].forEach {
def v = findProperty(it)
if (v != null) {
systemProperty it, v
}
}
}
tasks.withType(Sign).configureEach {
enabled = project.hasProperty('signing.keyId')
&& project.hasProperty('signing.password')
&& project.hasProperty('signing.secretKeyRingFile')
}
tasks.withType(Javadoc).configureEach {
options.tags = ["apiNote"]
options.addStringOption('bottom', javadocFooter())
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
options.compilerArgs += compilerArgs
}
//Temporary hack to disable caching of Test tasks.
//https://github.com/gradle/gradle/issues/9210
tasks.withType(Test).configureEach {
outputs.upToDateWhen { false }
}
configurations.configureEach {
resolutionStrategy {
force libs.protobuf.java
}
}
}
subprojects {
apply plugin: 'base'
repositories {
maven {
url = uri('https://repo.maven.apache.org/maven2/')
mavenContent {
releasesOnly()
}
}
maven {
url = uri(' https://repository.apache.org/service/local/staging/deploy/maven2')
mavenContent {
releasesOnly()
}
}
mavenLocal()
}
tasks.register('printSubDependencies', DependencyReportTask)
}
tasks.register('checkstyle') {
description = 'Runs all checkstyle tasks'
rootProject.subprojects { Project subproject ->
dependsOn subproject.tasks.withType(Checkstyle)
}
}
idea.project.settings {
compiler.javac {
// Workaround on https://youtrack.jetbrains.com/issue/IDEA-154038.
javacAdditionalOptions = compilerArgs.join(' ')
}
runConfigurations {
defaults(org.jetbrains.gradle.ext.JUnit) {
vmParameters = defaultJvmArgs.join(' ')
}
defaults(org.jetbrains.gradle.ext.Application) {
jvmArgs = defaultJvmArgs.join(' ')
}
}
}