buildscript { dependencies { classpath 'org.kohsuke:github-api:1.114' } repositories { gradlePluginPortal() } } apply from: "gradle/bclib-common.gradle" repositories { maven { url "https://maven.dblsaiko.net/" } maven { url "https://maven.fabricmc.net/" } maven { url "https://maven.shedaniel.me/" } maven { url 'https://maven.blamejared.com' } maven { url 'https://jitpack.io' } maven { url 'https://maven.terraformersmc.com/releases' } } archivesBaseName = project.archives_base_name version = project.mod_version loom { accessWidenerPath = file("src/main/resources/bclib.accesswidener") } moduleDependencies(project, ["together-v1"]) repositories { maven { url 'https://maven.terraformersmc.com/releases' } } dependencies { modCompileOnly "com.terraformersmc:modmenu:${project.modmenu_version}" } allprojects { group = project.maven_group apply plugin: "java-library" apply plugin: "fabric-loom" tasks.withType(GenerateModuleMetadata) { enabled = false } tasks.withType(JavaCompile).configureEach { options.encoding = "UTF-8" it.options.release = 17 } java { // Must be added before the split source sets are setup. withSourcesJar() } allprojects.each { p -> loom.mods.register(p.name) { sourceSet p.sourceSets.main } } dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings loom.officialMojangMappings() modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" } loom { shareRemapCaches = true } tasks.withType(ProcessResources).configureEach { inputs.property "version", project.version filesMatching("fabric.mod.json") { expand "version": project.version } } tasks.withType(AbstractArchiveTask) { preserveFileTimestamps = false reproducibleFileOrder = true } jar { from "../LICENSE" } } subprojects { javadoc.enabled = false } javadoc { options { source = "17" encoding = "UTF-8" charSet = "UTF-8" memberLevel = JavadocMemberLevel.PACKAGE addStringOption("Xdoclint:none", "-quiet") } allprojects.each { if (it.name == "deprecated") return source(it.sourceSets.main.allJava.srcDirs) } classpath = files(sourceSets.main.compileClasspath) include("**") failOnError false } task javadocJar(type: Jar) { dependsOn javadoc from javadoc.destinationDir //Set as `fatjavadoc` to prevent an ide form trying to use this javadoc, over using the modules javadoc archiveClassifier = "fatjavadoc" } build.dependsOn javadocJar loom {} processResources { println "Version: ${project.mod_version}" inputs.property "version", project.mod_version filesMatching("fabric.mod.json") { expand "version": project.mod_version } } subprojects.each { remapJar.dependsOn("${it.path}:remapJar") } dependencies { afterEvaluate { subprojects.each { api project(path: "${it.path}", configuration: "namedElements") } } } remapJar { afterEvaluate { subprojects.each { nestedJars.from project("${it.path}").tasks.getByName("remapJar") } } } // ensure that the encoding is set to UTF-8, no matter what the system default is // this fixes some edge cases with special characters not displaying correctly // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html tasks.withType(JavaCompile) { options.encoding = "UTF-8" it.options.release = 17 } javadoc { options.tags = ["reason"] options.stylesheetFile = new File(projectDir, "javadoc.css"); } jar { from "LICENSE" } artifacts { archives sourcesJar archives javadocJar } def env = System.getenv() import org.kohsuke.github.GHReleaseBuilder import org.kohsuke.github.GitHub task release(dependsOn: [remapJar, sourcesJar, javadocJar]) { onlyIf { env.GITHUB_TOKEN } doLast { def github = GitHub.connectUsingOAuth(env.GITHUB_TOKEN as String) def repository = github.getRepository("quiqueck/BCLib") def releaseBuilder = new GHReleaseBuilder(repository, version as String) releaseBuilder.name("${archivesBaseName}-${version}") releaseBuilder.body("A changelog can be found at https://github.com/quiqueck/BCLib/commits") releaseBuilder.commitish("main") def ghRelease = releaseBuilder.create() ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar"), "application/java-archive"); ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}-sources.jar"), "application/java-archive"); ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}-javadoc.jar"), "application/java-archive"); } } // configure the maven publication publishing { publications { gpr(MavenPublication) { artifactId archivesBaseName artifact(remapJar) { builtBy remapJar } artifact(sourcesJar) { builtBy remapSourcesJar } } } // select the repositories you want to publish to repositories { maven { name = "GitHubPackages" url = uri("https://maven.pkg.github.com/quiqueck/bclib") credentials { username = env.GITHUB_USER password = env.GITHUB_TOKEN } } } } configurations { dev { canBeResolved = false canBeConsumed = true } } artifacts { dev jar }