Ascension/build.gradle

165 lines
4.8 KiB
Groovy

plugins {
alias(libs.plugins.shadow) apply false
alias(libs.plugins.licenser) apply false
alias(libs.plugins.blossom) apply false
alias(libs.plugins.indra.git) apply false
alias(libs.plugins.dependencydownload.plugin) apply false
}
version '2.0.0-SNAPSHOT'
subprojects {
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'org.cadixdev.licenser'
apply plugin: 'net.kyori.indra.git'
apply plugin: 'dev.vankka.dependencydownload.plugin'
group 'com.discordsrv'
version = rootProject.version
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
configurations {
runtimeDownloadApi
compileOnlyApi.extendsFrom runtimeDownloadApi
runtimeDownloadOnly.extendsFrom runtimeDownloadApi
all {
resolutionStrategy.failOnDynamicVersions()
}
}
generateRuntimeDownloadResourceForRuntimeDownloadOnly {
file = 'dependencies/runtimeDownload-' + project.name + '.txt'
}
repositories {
// Snapshot repositories
//maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
mavenLocal()
maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' }
maven {
url 'https://nexus.scarsz.me/content/groups/public/'
content {
includeGroup 'github.scarsz'
includeGroup 'me.scarsz'
includeGroup 'me.minecraftauth'
}
}
maven {
url 'https://libraries.minecraft.net'
content {
includeGroup 'com.mojang'
}
}
// Get dependencies from central last, everything else should be filtered
mavenCentral()
}
// Add a 'template' source set to all projects
sourceSets {
template {
java {
compileClasspath += sourceSets.main.compileClasspath
}
}
main {
java {
srcDir sourceSets.template.output.generatedSourcesDirs.getSingleFile()
}
}
}
// Compile template source
compileJava { dependsOn compileTemplateJava }
// Fix template source set not being depended on/other tasks not depending on template source set
checkLicenseMain { dependsOn compileTemplateJava }
updateLicenseMain { dependsOn compileTemplateJava }
dependencies {
// Test dependencies
testImplementation(libs.jupiter.api)
testRuntimeOnly(libs.jupiter.engine)
// DynamicProxy
templateAnnotationProcessor(libs.dynamicproxy)
}
test {
useJUnitPlatform()
}
task deleteJarsDir(type: Delete) {
delete rootProject.file('jars')
}
clean.dependsOn deleteJarsDir
defaultTasks 'build'
jar {
duplicatesStrategy = DuplicatesStrategy.INCLUDE
// If CI then check that licenses are correct, otherwise automatically apply licenses on build
dependsOn (System.getenv('CI') === 'true' ? licenseCheck : licenseFormat)
// Always run shadowJar
finalizedBy shadowJar
manifest.attributes(
'Specification-Title': 'DiscordSRV',
'Specification-Vendor': 'DiscordSRV',
'Specification-Version': project.version
)
if (project.name != "api") {
manifest.attributes(
'Implementation-Title': 'DiscordSRV',
'Implementation-Vendor': 'DiscordSRV',
'Implementation-Version': project.version
)
}
if (indraGit.isPresent()) {
indraGit.applyVcsInformationToManifest(manifest)
}
}
shadowJar {
// Merge META-INF/services files where needed
mergeServiceFiles()
// Exclude signatures, maven/ and proguard/ from META-INF
exclude 'META-INF/*.SF'
exclude 'META-INF/*.DSA'
exclude 'META-INF/*.RSA'
exclude 'META-INF/maven/**'
exclude 'META-INF/proguard/**'
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
// Enable compiler warnings for unchecked & deprecation
options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
}
}
processResources {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
license {
header = rootProject.file('buildscript/license/LICENSE_HEADER')
properties {
var inception = '2016'
var currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR))
year = inception == currentYear ? currentYear : inception + '-' + currentYear
}
include '**/*.java' // only java files
}
}