/* * Copyright 2020 The JSpecify Authors. * * Licensed 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. */ plugins { id 'java-library' id 'com.diffplug.spotless' version '6.25.0' id 'com.github.node-gradle.node' version '7.0.2' id 'io.github.gradle-nexus.publish-plugin' version '1.3.0' apply false id 'net.ltgt.errorprone' version '3.0.1' id "biz.aQute.bnd.builder" version "7.0.0" } ext { junitVersion = '5.9.3' errorproneVersion = '2.20.0' } repositories { mavenCentral() } def javaVersion = JavaLanguageVersion.of(System.env.JAVA_VERSION ?: 11) java.toolchain.languageVersion = javaVersion apply from: "gradle/mrjar.gradle" apply from: "gradle/integration-test.gradle" apply from: "gradle/format.gradle" apply from: "gradle/publish.gradle" dependencies { errorprone "com.google.errorprone:error_prone_core:${errorproneVersion}" } java { if (javaVersion.canCompileOrRun(15)) { withJavadocJar() } withSourcesJar() sourceCompatibility 8 targetCompatibility 8 // but compile against newer JDK libraries so that we can use @Target({..., MODULE}) tasks.named('sourcesJar') { exclude('**.class') } } tasks.withType(AbstractArchiveTask).configureEach { preserveFileTimestamps = false reproducibleFileOrder = true filePermissions { unix('rw-r--r--') } dirPermissions { unix('rwxr-xr-x') } } jar { manifest { attributes( "Bundle-Version": version, "Implementation-Version": version ) } } javadoc { options.encoding = 'UTF-8' } node { download = true nodeProjectDir = file("${project.projectDir}/docs") } tasks.register('buildDocs') { group 'Build' description 'Builds the jspecify.org website.' dependsOn('npm_run_build') dependsOn('javadoc') doLast { copy { from tasks.named('javadoc') into "${project.projectDir}/docs/build/docs/api" } } } defaultTasks 'spotlessApply', 'build'