Multiverse-Core/build.gradle

322 lines
9.2 KiB
Groovy
Raw Normal View History

2023-02-02 23:07:51 +01:00
import org.apache.tools.ant.filters.ReplaceTokens
plugins {
id 'java-library'
id 'maven-publish'
id 'com.github.johnrengelman.shadow' version '7.1.2'
2023-03-02 08:07:38 +01:00
id "org.jetbrains.kotlin.jvm" version "1.8.10"
2023-02-02 23:07:51 +01:00
}
2023-02-20 06:04:43 +01:00
version = System.getenv('GITHUB_VERSION') ?: 'local'
2023-02-02 23:07:51 +01:00
group = 'com.onarandombox.multiversecore'
description = 'Multiverse-Core'
2023-03-02 08:07:38 +01:00
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
2023-03-02 08:07:38 +01:00
}
}
2023-02-02 23:07:51 +01:00
repositories {
mavenLocal()
mavenCentral()
2023-02-02 23:07:51 +01:00
maven {
url = uri('https://hub.spigotmc.org/nexus/content/repositories/snapshots/')
}
maven {
url = uri('https://repo.onarandombox.com/content/groups/public')
}
maven {
url = uri('https://hub.spigotmc.org/nexus/content/groups/public/')
}
maven {
url = uri('https://jitpack.io')
}
maven {
url = uri('https://repo.minebench.de/')
}
maven {
url = uri('https://repo.maven.apache.org/maven2/')
}
2023-02-20 13:29:08 +01:00
maven {
name = 'aikar repo'
url = uri('https://repo.aikar.co/content/groups/aikar/')
}
maven {
name = 'glaremasters repo'
url = 'https://repo.glaremasters.me/repository/towny/'
}
2023-09-06 17:19:24 +02:00
maven {
name = 'PlaceholderAPI'
url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/'
}
2023-09-06 17:19:24 +02:00
maven {
name = 'papermc repo'
url = 'https://repo.papermc.io/repository/maven-public/'
}
2023-02-02 23:07:51 +01:00
}
2023-03-02 07:20:38 +01:00
configurations {
2023-08-28 21:33:41 +02:00
// Add configuration for server API
compileOnly.extendsFrom serverApi
runtimeClasspath.extendsFrom serverApi
// Add configuration for external plugins
implementation.extendsFrom externalPlugin
// Add configuration for dependencies that will be included in fat jar
compileClasspath.extendsFrom shadowed
testCompileClasspath.extendsFrom shadowed
testRuntimeClasspath.extendsFrom shadowed
oldTestCompileClasspath.extendsFrom shadowed
oldTestRuntimeClasspath.extendsFrom shadowed
// Add configuration for old tests
2023-03-02 07:20:38 +01:00
oldTestImplementation.extendsFrom implementation
oldTestRuntime.extendsFrom runtime
2023-02-02 23:07:51 +01:00
}
dependencies {
2023-08-28 21:33:41 +02:00
serverApi 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT'
2023-02-02 23:07:51 +01:00
2023-02-20 13:29:08 +01:00
// Economy
2023-08-28 21:33:41 +02:00
externalPlugin('com.github.MilkBowl:VaultAPI:1.7.1') {
2023-02-02 23:07:51 +01:00
exclude group: 'org.bukkit', module: 'bukkit'
}
// PlaceholderAPI
externalPlugin 'me.clip:placeholderapi:2.11.3'
2023-02-20 13:29:08 +01:00
// Command Framework
2023-08-28 21:33:41 +02:00
shadowed 'co.aikar:acf-paper:0.5.1-SNAPSHOT'
2023-02-20 13:29:08 +01:00
// Config
2023-08-28 21:33:41 +02:00
shadowed('me.main__.util:SerializationConfig:1.7') {
2023-02-02 23:07:51 +01:00
exclude group: 'org.bukkit', module: 'bukkit'
}
shadowed('io.github.townyadvanced.commentedconfiguration:CommentedConfiguration:1.0.1') {
2023-02-20 13:29:08 +01:00
exclude group: 'org.spigotmc', module: 'spigot-api'
2023-02-02 23:07:51 +01:00
}
2023-02-20 13:29:08 +01:00
// Utils
2023-08-28 21:33:41 +02:00
shadowed 'io.vavr:vavr:0.10.4'
shadowed 'org.glassfish.hk2:hk2-locator:3.0.3'
shadowed('com.dumptruckman.minecraft:Logging:1.1.1') {
2023-02-02 23:07:51 +01:00
exclude group: 'junit', module: 'junit'
}
2023-08-28 21:33:41 +02:00
shadowed 'de.themoep.idconverter:mappings:1.2-SNAPSHOT'
shadowed 'org.bstats:bstats-bukkit:2.2.1'
shadowed 'net.minidev:json-smart:2.4.8'
shadowed 'org.jetbrains:annotations:22.0.0'
shadowed 'io.papermc:paperlib:1.0.8'
2023-02-02 23:07:51 +01:00
2023-02-20 13:29:08 +01:00
// Tests
2023-03-02 08:07:38 +01:00
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10'
2023-09-07 03:48:47 +02:00
testImplementation 'com.github.seeseemelk:MockBukkit-v1.20:3.20.2'
2023-03-02 06:44:32 +01:00
testImplementation('com.googlecode.json-simple:json-simple:1.1.1') {
exclude group: 'junit', module: 'junit'
}
2023-03-02 08:10:36 +01:00
testImplementation 'org.jetbrains.kotlin:kotlin-test'
2023-03-12 22:04:38 +01:00
testImplementation 'com.natpryce:hamkrest:1.8.0.1'
testImplementation 'org.mockito.kotlin:mockito-kotlin:4.1.0'
2023-03-02 07:20:38 +01:00
// Old Tests
oldTestImplementation 'org.spigotmc:spigot-api:1.19.3-R0.1-SNAPSHOT'
oldTestImplementation('com.googlecode.json-simple:json-simple:1.1.1') {
exclude group: 'junit', module: 'junit'
}
oldTestImplementation 'junit:junit:4.13.1'
oldTestImplementation 'org.mockito:mockito-core:3.11.2'
oldTestImplementation 'commons-io:commons-io:2.7'
2023-03-06 05:00:28 +01:00
// Annotation Processors
annotationProcessor 'org.glassfish.hk2:hk2-metadata-generator:3.0.3'
2023-03-12 22:30:46 +01:00
testAnnotationProcessor 'org.glassfish.hk2:hk2-metadata-generator:3.0.3'
2023-02-02 23:07:51 +01:00
}
java {
withSourcesJar()
withJavadocJar()
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
tasks.withType(Javadoc) {
options.encoding = 'UTF-8'
}
2023-02-20 00:58:13 +01:00
configurations {
[apiElements, runtimeElements].each {
it.outgoing.artifacts.removeIf { it.buildDependencies.getDependencies(null).contains(jar) }
it.outgoing.artifact(shadowJar)
}
}
2023-03-02 07:20:38 +01:00
sourceSets {
oldTest {
java {
compileClasspath += main.output
runtimeClasspath += main.output
srcDir file('src/old-test/java')
}
resources.srcDir file('src/old-test/resources')
}
}
2023-02-02 23:07:51 +01:00
publishing {
publications {
maven(MavenPublication) {
2023-02-20 00:58:13 +01:00
from components.java
pom.withXml {
2023-08-28 21:33:41 +02:00
Node pomNode = asNode()
// Remove Kotlin dependency
pomNode.dependencies.'*'.findAll() {
it.groupId.text() == 'org.jetbrains.kotlin'
}.each() {
it.parent().remove(it)
}
// Switch runtime deps to provided
pomNode.dependencies.'*'.findAll() {
it.scope.text() == 'runtime'
}.each() {
it.scope*.value = 'provided'
}
2023-08-28 21:33:41 +02:00
// Add spigot api to pom
project.configurations.serverApi.allDependencies.each { dependency ->
pomNode.dependencies[0].appendNode("dependency").with {
it.appendNode("groupId", dependency.group)
it.appendNode("artifactId", dependency.name)
it.appendNode("version", dependency.version)
it.appendNode("scope", "provided")
}
}
}
2023-02-20 00:58:13 +01:00
}
}
repositories {
maven {
name = "GitHubPackages"
url = "https://maven.pkg.github.com/Multiverse/Multiverse-Core"
credentials {
username = System.getenv("GITHUB_ACTOR")
password = System.getenv("GITHUB_TOKEN")
2023-02-02 23:07:51 +01:00
}
}
}
}
ext.bitlyAccessToken = System.getenv('BITLY_ACCESS_TOKEN') ?: 'bitly-access-token'
task prepareSource(type: Sync) {
inputs.property 'bitlyAccessToken', bitlyAccessToken
from sourceSets.main.java
into "$buildDir/src"
filter(ReplaceTokens, tokens: [
'bitly-access-token': bitlyAccessToken,
])
}
compileJava {
source = prepareSource.outputs
}
2023-03-12 22:30:46 +01:00
tasks.withType(JavaCompile) {
configure(options) {
options.compilerArgs << '-Aorg.glassfish.hk2.metadata.location=META-INF/hk2-locator/Multiverse-Core'
}
2023-02-02 23:07:51 +01:00
}
2023-03-02 08:07:38 +01:00
compileKotlin {
// We're not using Kotlin in the plugin itself, just tests!
enabled = false
}
configurations.findAll { !it.name.startsWith('test') }.each {
it.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
2023-03-02 08:07:38 +01:00
}
2023-02-02 23:07:51 +01:00
processResources {
2023-02-20 00:58:13 +01:00
def props = [version: "${project.version}"]
2023-02-02 23:07:51 +01:00
inputs.properties props
filteringCharset 'UTF-8'
filesMatching('plugin.yml') {
expand props
}
// This task should never be skipped. The tests depend on this having been run but we want the new version number
// that is created after tests are run and before we run again to publish.
outputs.upToDateWhen { false }
2023-02-02 23:07:51 +01:00
}
javadoc {
source = sourceSets.main.allJava
classpath = configurations.compileClasspath
}
project.configurations.api.canBeResolved = true
shadowJar {
2023-08-28 21:33:41 +02:00
relocate 'co.aikar', 'com.onarandombox.acf'
2023-02-02 23:07:51 +01:00
relocate 'com.dumptruckman.minecraft.util.Logging', 'com.onarandombox.MultiverseCore.utils.CoreLogging'
relocate 'com.dumptruckman.minecraft.util.DebugLog', 'com.onarandombox.MultiverseCore.utils.DebugFileLogger'
relocate 'de.themoep.idconverter', 'com.onarandombox.idconverter'
2023-02-20 13:29:08 +01:00
relocate 'io.github.townyadvanced.commentedconfiguration', 'com.onarandombox.commentedconfiguration'
relocate 'me.main__.util', 'com.onarandombox.serializationconfig'
relocate 'org.bstats', 'com.onarandombox.bstats'
relocate 'com.sun', 'com.onarandombox.sun'
relocate 'net.minidev', 'com.onarandombox.minidev'
relocate 'org.objectweb', 'com.onarandombox.objectweb'
relocate 'io.vavr', 'com.onarandombox.vavr'
relocate 'jakarta', 'com.onarandombox.jakarta'
relocate 'javassist', 'com.onarandombox.javassist'
relocate 'org.aopalliance', 'com.onarandombox.aopalliance'
relocate 'org.glassfish', 'com.onarandombox.glassfish'
relocate 'org.jvnet', 'com.onarandombox.jvnet'
relocate 'org.intellij', 'com.onarandombox.intellij'
relocate 'org.jetbrains', 'com.onarandombox.jetbrains'
relocate 'io.papermc.lib', 'com.onarandombox.paperlib'
2023-08-24 19:28:02 +02:00
configurations = [project.configurations.shadowed]
2023-02-02 23:07:51 +01:00
archiveFileName = "$baseName-$version.$extension"
2023-03-02 08:07:38 +01:00
dependencies {
exclude(dependency {
it.moduleGroup == 'org.jetbrains.kotlin'
})
}
2023-08-28 21:33:41 +02:00
//classifier = ''
2023-02-02 23:07:51 +01:00
}
build.dependsOn shadowJar
jar.enabled = false
2023-02-20 13:29:08 +01:00
test {
2023-03-02 08:10:36 +01:00
useJUnitPlatform()
testLogging {
exceptionFormat = 'full'
}
2023-02-20 13:29:08 +01:00
}