mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2024-11-24 19:46:09 +01:00
350 lines
10 KiB
Groovy
350 lines
10 KiB
Groovy
import org.apache.tools.ant.filters.ReplaceTokens
|
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
|
|
|
plugins {
|
|
id 'java-library'
|
|
id 'maven-publish'
|
|
id 'com.gradleup.shadow' version '8.3.5'
|
|
id "org.jetbrains.kotlin.jvm" version "2.0.21"
|
|
}
|
|
|
|
version = System.getenv('GITHUB_VERSION') ?: 'local'
|
|
group = 'org.mvplugins.multiverse.core'
|
|
description = 'Multiverse-Core'
|
|
|
|
compileJava {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
compileTestJava {
|
|
sourceCompatibility = JavaVersion.VERSION_21
|
|
targetCompatibility = JavaVersion.VERSION_21
|
|
}
|
|
|
|
compileTestKotlin {
|
|
compilerOptions {
|
|
jvmTarget.set(JvmTarget.JVM_21)
|
|
javaParameters.set(true)
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
|
|
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/')
|
|
}
|
|
|
|
maven {
|
|
name = 'aikar repo'
|
|
url = uri('https://repo.aikar.co/content/groups/aikar/')
|
|
}
|
|
|
|
maven {
|
|
name = 'glaremasters repo'
|
|
url = 'https://repo.glaremasters.me/repository/towny/'
|
|
}
|
|
|
|
maven {
|
|
name = "helpchatRepoReleases"
|
|
url = uri("https://repo.helpch.at/releases/")
|
|
}
|
|
|
|
maven {
|
|
name = 'papermc repo'
|
|
url = 'https://repo.papermc.io/repository/maven-public/'
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
// 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
|
|
oldTestImplementation.extendsFrom implementation
|
|
oldTestRuntime.extendsFrom runtime
|
|
}
|
|
|
|
dependencies {
|
|
serverApi 'org.spigotmc:spigot-api:1.18.2-R0.1-SNAPSHOT'
|
|
|
|
// Economy
|
|
externalPlugin('com.github.MilkBowl:VaultAPI:1.7.1') {
|
|
exclude group: 'org.bukkit', module: 'bukkit'
|
|
}
|
|
|
|
// PlaceholderAPI
|
|
externalPlugin 'me.clip:placeholderapi:2.11.6'
|
|
|
|
// Command Framework
|
|
shadowed 'co.aikar:acf-paper:0.5.1-SNAPSHOT'
|
|
|
|
// Config
|
|
shadowed('io.github.townyadvanced.commentedconfiguration:CommentedConfiguration:1.0.1') {
|
|
exclude group: 'org.spigotmc', module: 'spigot-api'
|
|
}
|
|
|
|
// Utils
|
|
shadowed 'io.vavr:vavr:0.10.4'
|
|
shadowed 'org.glassfish.hk2:hk2-locator:3.0.3'
|
|
shadowed('org.glassfish.hk2:hk2-inhabitant-generator:3.0.3') {
|
|
exclude group: 'org.apache.maven', module: 'maven-core'
|
|
}
|
|
shadowed('com.dumptruckman.minecraft:Logging:1.1.1') {
|
|
exclude group: 'junit', module: 'junit'
|
|
}
|
|
shadowed 'de.themoep.idconverter:mappings:1.2-SNAPSHOT'
|
|
shadowed('org.bstats:bstats-bukkit:3.1.0') {
|
|
exclude group: 'org.bukkit', module: 'bukkit'
|
|
}
|
|
shadowed 'net.minidev:json-smart:2.4.9'
|
|
shadowed 'org.jetbrains:annotations:22.0.0'
|
|
shadowed 'io.papermc:paperlib:1.0.8'
|
|
|
|
// Tests
|
|
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21'
|
|
testImplementation 'org.mockbukkit.mockbukkit:mockbukkit-v1.21:4.3.1'
|
|
testImplementation('com.googlecode.json-simple:json-simple:1.1.1') {
|
|
exclude group: 'junit', module: 'junit'
|
|
}
|
|
testImplementation 'org.jetbrains.kotlin:kotlin-test'
|
|
testImplementation 'com.natpryce:hamkrest:1.8.0.1'
|
|
testImplementation 'org.mockito.kotlin:mockito-kotlin:4.1.0'
|
|
|
|
// Old Tests
|
|
oldTestImplementation 'org.spigotmc:spigot-api:1.20.1-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'
|
|
|
|
// Annotation Processors
|
|
annotationProcessor 'org.glassfish.hk2:hk2-metadata-generator:3.0.3'
|
|
testAnnotationProcessor 'org.glassfish.hk2:hk2-metadata-generator:3.0.3'
|
|
}
|
|
|
|
|
|
java {
|
|
withSourcesJar()
|
|
withJavadocJar()
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
|
|
tasks.withType(Javadoc).configureEach {
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
|
|
|
|
configurations {
|
|
[apiElements, runtimeElements].each {
|
|
it.outgoing.artifacts.removeIf { it.buildDependencies.getDependencies(null).contains(jar) }
|
|
it.outgoing.artifact(shadowJar)
|
|
}
|
|
}
|
|
|
|
|
|
sourceSets {
|
|
oldTest {
|
|
java {
|
|
compileClasspath += main.output
|
|
runtimeClasspath += main.output
|
|
srcDir file('src/old-test/java')
|
|
}
|
|
resources.srcDir file('src/old-test/resources')
|
|
}
|
|
}
|
|
|
|
|
|
publishing {
|
|
publications {
|
|
maven(MavenPublication) {
|
|
from components.java
|
|
|
|
pom.withXml {
|
|
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'
|
|
}
|
|
|
|
// 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")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
repositories {
|
|
maven {
|
|
name = "GitHubPackages"
|
|
url = "https://maven.pkg.github.com/Multiverse/Multiverse-Core"
|
|
credentials {
|
|
username = System.getenv("GITHUB_ACTOR")
|
|
password = System.getenv("GITHUB_TOKEN")
|
|
}
|
|
}
|
|
maven {
|
|
name = "multiverse"
|
|
def releasesRepoUrl = "https://repo.dumptruckman.com/multiverse-releases"
|
|
def snapshotsRepoUrl = "https://repo.dumptruckman.com/multiverse-snapshots"
|
|
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
|
|
credentials(PasswordCredentials)
|
|
}
|
|
|
|
maven {
|
|
// todo: remove before mv5 release
|
|
name = "multiverseBeta"
|
|
url = "https://repo.c0ding.party/multiverse-beta"
|
|
credentials(PasswordCredentials)
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
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
|
|
}
|
|
tasks.withType(JavaCompile) {
|
|
configure(options) {
|
|
options.compilerArgs << '-Aorg.glassfish.hk2.metadata.location=META-INF/hk2-locator/Multiverse-Core'
|
|
}
|
|
}
|
|
|
|
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'
|
|
}
|
|
|
|
processResources {
|
|
def props = [version: "${project.version}"]
|
|
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 }
|
|
}
|
|
|
|
|
|
javadoc {
|
|
source = sourceSets.main.allJava
|
|
classpath = configurations.compileClasspath
|
|
}
|
|
|
|
|
|
project.configurations.api.canBeResolved = true
|
|
|
|
shadowJar {
|
|
relocate 'co.aikar', 'org.mvplugins.multiverse.external.acf'
|
|
relocate 'com.dumptruckman.minecraft.util.Logging', 'org.mvplugins.multiverse.core.utils.CoreLogging'
|
|
relocate 'com.dumptruckman.minecraft.util.DebugLog', 'org.mvplugins.multiverse.core.utils.DebugFileLogger'
|
|
relocate 'de.themoep.idconverter', 'org.mvplugins.multiverse.external.idconverter'
|
|
relocate 'io.github.townyadvanced.commentedconfiguration', 'org.mvplugins.multiverse.external.commentedconfiguration'
|
|
relocate 'me.main__.util', 'org.mvplugins.multiverse.external.serializationconfig'
|
|
relocate 'org.bstats', 'org.mvplugins.multiverse.external.bstats'
|
|
relocate 'com.sun', 'org.mvplugins.multiverse.external.sun'
|
|
relocate 'net.minidev', 'org.mvplugins.multiverse.external.minidev'
|
|
relocate 'org.objectweb', 'org.mvplugins.multiverse.external.objectweb'
|
|
relocate 'io.vavr', 'org.mvplugins.multiverse.external.vavr'
|
|
relocate 'jakarta', 'org.mvplugins.multiverse.external.jakarta'
|
|
relocate 'javassist', 'org.mvplugins.multiverse.external.javassist'
|
|
relocate 'org.aopalliance', 'org.mvplugins.multiverse.external.aopalliance'
|
|
relocate 'org.glassfish', 'org.mvplugins.multiverse.external.glassfish'
|
|
relocate 'org.jvnet', 'org.mvplugins.multiverse.external.jvnet'
|
|
relocate 'org.intellij', 'org.mvplugins.multiverse.external.intellij'
|
|
relocate 'org.jetbrains', 'org.mvplugins.multiverse.external.jetbrains'
|
|
relocate 'io.papermc.lib', 'org.mvplugins.multiverse.external.paperlib'
|
|
|
|
configurations = [project.configurations.shadowed]
|
|
|
|
archiveClassifier.set('')
|
|
|
|
dependencies {
|
|
exclude(dependency {
|
|
it.moduleGroup == 'org.jetbrains.kotlin'
|
|
})
|
|
}
|
|
//classifier = ''
|
|
}
|
|
|
|
build.dependsOn shadowJar
|
|
jar.enabled = false
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
|
|
testLogging {
|
|
exceptionFormat = 'full'
|
|
}
|
|
}
|