blob: 08f5c67f60ea2c19c14575d3cff96725c09d0e5f [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.
*/
import com.github.vlsi.gradle.crlf.CrLfSpec
import com.github.vlsi.gradle.crlf.LineEndings
import com.github.vlsi.gradle.crlf.filter
import com.github.vlsi.gradle.dsl.configureEach
plugins {
id("java")
id("eclipse")
id("idea")
id("com.github.vlsi.crlf")
id("com.github.vlsi.gradle-extensions")
id("build-logic.test-base")
id("build-logic.build-params")
id("build-logic.style")
id("build-logic.test-junit5")
}
java {
toolchain {
configureToolchain(buildParameters.buildJdk)
}
consistentResolution {
useRuntimeClasspathVersions()
}
}
tasks.configureEach<JavaCompile> {
// Use --release=8 for Java 10+ so the generated bytecode does not include methods introduced in Java 9+
options.release.set(
provider {
buildParameters.targetJavaVersion.takeIf {
javaCompiler.get().metadata.languageVersion.asInt() > 9
}
}
)
}
tasks.configureEach<JavaExec> {
buildParameters.testJdk?.let {
javaLauncher.convention(javaToolchains.launcherFor(it))
}
}
tasks.configureEach<Checkstyle> {
buildParameters.buildJdk?.let {
javaLauncher.convention(javaToolchains.launcherFor(it))
}
}
dependencies {
findProject(":src:bom")?.let {
api(platform(it))
}
findProject(":src:bom-testing")?.let{
testImplementation(platform(it))
plugins.withId("java-test-fixtures") {
"testFixturesImplementation"(platform(it))
}
}
findProject(":src:bom-thirdparty")?.let{
api(platform(it))
annotationProcessor(platform(it))
compileOnlyApi(platform(it))
}
}
tasks.register<DependencyInsightReportTask>("allDependencyInsight") {
group = HelpTasksPlugin.HELP_GROUP
description =
"Shows insights where the dependency is used. For instance: allDependencyInsight --configuration compile --dependency org.jsoup:jsoup"
}
tasks.configureEach<JavaCompile> {
inputs.property("java.version", System.getProperty("java.version"))
inputs.property("java.vm.version", System.getProperty("java.vm.version"))
options.apply {
encoding = "UTF-8"
compilerArgs.add("-Xlint:deprecation")
if (buildParameters.werror) {
compilerArgs.add("-Werror")
}
}
}
tasks.configureEach<ProcessResources> {
filteringCharset = "UTF-8"
eachFile {
if (name.endsWith(".properties")) {
filteringCharset = "UTF-8"
// apply native2ascii conversion since Java 8 expects properties to have ascii symbols only
filter(org.apache.tools.ant.filters.EscapeUnicode::class)
filter(LineEndings.LF)
} else if (name.endsWith(".dtd") || name.endsWith(".svg") ||
name.endsWith(".txt")
) {
filter(LineEndings.LF)
}
}
}
tasks.configureEach<Javadoc> {
(options as StandardJavadocDocletOptions).apply {
noTimestamp.value = true
showFromProtected()
locale = "en"
docEncoding = "UTF-8"
charSet = "UTF-8"
encoding = "UTF-8"
docTitle = "Apache JMeter ${project.name} API"
windowTitle = "Apache JMeter ${project.name} API"
header = "<b>Apache JMeter</b>"
addStringOption("source", "8")
addStringOption("Xmaxwarns", "10")
addBooleanOption("Xdoclint:all,-missing", true)
val lastEditYear: String by rootProject.extra
bottom =
"Copyright &copy; 1998-$lastEditYear Apache Software Foundation. All Rights Reserved."
if (buildParameters.buildJdkVersion > 8) {
addBooleanOption("html5", true)
links("https://docs.oracle.com/en/java/javase/11/docs/api/")
} else {
links("https://docs.oracle.com/javase/8/docs/api/")
}
}
}
// Add default license/notice when missing (e.g. see :src:config that overrides LICENSE)
afterEvaluate {
tasks.configureEach<Jar> {
CrLfSpec(LineEndings.LF).run {
into("META-INF") {
filteringCharset = "UTF-8"
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
// Note: we need "generic Apache-2.0" text without third-party items
// So we use the text from $rootDir/config/ since source distribution
// contains altered text at $rootDir/LICENSE
textFrom("$rootDir/config/LICENSE")
textFrom("$rootDir/NOTICE")
}
}
}
}
tasks.configureEach<Jar> {
manifest {
attributes["Bundle-License"] = "Apache-2.0"
attributes["Specification-Title"] = "Apache JMeter"
attributes["Specification-Vendor"] = "Apache Software Foundation"
attributes["Implementation-Vendor"] = "Apache Software Foundation"
attributes["Implementation-Vendor-Id"] = "org.apache"
attributes["Implementation-Version"] = rootProject.version
}
}