import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.compile.JavaCompile import org.gradle.api.tasks.javadoc.Javadoc import org.gradle.api.tasks.testing.Test import org.gradle.external.javadoc.StandardJavadocDocletOptions import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.getByName import org.gradle.kotlin.dsl.named import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.withType fun Project.applyPlatformAndCoreConfiguration() { applyCommonConfiguration() apply(plugin = "java") apply(plugin = "eclipse") apply(plugin = "idea") apply(plugin = "maven-publish") // apply(plugin = "checkstyle") apply(plugin = "com.github.johnrengelman.shadow") ext["internalVersion"] = "$version;${rootProject.ext["gitCommitHash"]}" configure { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = sourceCompatibility } tasks .withType() .matching { it.name == "compileJava" || it.name == "compileTestJava" } .configureEach { val disabledLint = listOf( "processing", "path", "fallthrough", "serial" ) //options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" }) options.isDeprecation = false options.encoding = "UTF-8" } // configure { // configFile = rootProject.file("config/checkstyle/checkstyle.xml") // toolVersion = "8.34" // } tasks.withType().configureEach { useJUnitPlatform() } dependencies { "compileOnly"("org.jetbrains:annotations:20.1.0") "testImplementation"("org.junit.jupiter:junit-jupiter-api:5.6.1") "testImplementation"("org.junit.jupiter:junit-jupiter-params:5.6.1") "testImplementation"("org.mockito:mockito-core:3.3.3") "testImplementation"("org.mockito:mockito-junit-jupiter:3.3.3") "testRuntime"("org.junit.jupiter:junit-jupiter-engine:5.6.1") } // Java 8 turns on doclint which we fail tasks.withType().configureEach { (options as StandardJavadocDocletOptions).apply { addStringOption("Xdoclint:none", "-quiet") tags( "apiNote:a:API Note:", "implSpec:a:Implementation Requirements:", "implNote:a:Implementation Note:" ) } } tasks.register("javadocJar") { dependsOn("javadoc") archiveClassifier.set("javadoc") from(tasks.getByName("javadoc").destinationDir) } tasks.named("assemble").configure { dependsOn("javadocJar") } artifacts { add("archives", tasks.named("jar")) add("archives", tasks.named("javadocJar")) } if (name == "worldedit-core" || name == "worldedit-bukkit") { tasks.register("sourcesJar") { dependsOn("classes") archiveClassifier.set("sources") from(sourceSets["main"].allSource) } artifacts { add("archives", tasks.named("sourcesJar")) } tasks.named("assemble").configure { dependsOn("sourcesJar") } } // tasks.named("check").configure { // dependsOn("checkstyleMain", "checkstyleTest") // } } fun Project.applyShadowConfiguration() { tasks.named("shadowJar") { dependencies { include(project(":worldedit-libs:core")) include(project(":worldedit-libs:${project.name.replace("worldedit-", "")}")) include(project(":worldedit-core")) exclude("com.google.code.findbugs:jsr305") } archiveFileName.set("FastAsyncWorldEdit-${project.version}.jar") exclude("GradleStart**") exclude(".cache") exclude("LICENSE*") exclude("META-INF/maven/**") minimize() } } val CLASSPATH = listOf("truezip", "truevfs", "js") .map { "$it.jar" } .flatMap { listOf(it, "WorldEdit/$it") } .joinToString(separator = " ")