/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * User Manual available at https://docs.gradle.org/5.6.3/userguide/tutorial_java_projects.html
 */

plugins {
    // Apply the java plugin to add support for Java
    id 'java'

    // Apply the application plugin to add support for building a CLI application
    id 'application'

    id 'maven-publish'
    id 'signing'
}

group = 'tech.xigam'
version = '1.0.0-dev'

sourceCompatibility = 17
targetCompatibility = 17

java {
    withJavadocJar()
    withSourcesJar()
}

repositories {
    mavenCentral()
}

dependencies {
    implementation fileTree(dir: 'lib', include: ['*.jar'])
    
	implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.32'
	implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.9'
    implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.9'
    implementation group: 'io.netty', name: 'netty-all', version: '4.1.71.Final'
    
	implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.8'
	implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.18.2'
	
	implementation group: 'org.reflections', name: 'reflections', version: '0.10.2'

	implementation group: 'dev.morphia.morphia', name: 'morphia-core', version: '2.2.6'

    implementation group: 'org.greenrobot', name: 'eventbus-java', version: '3.3.1'
    implementation group: 'org.danilopianini', name: 'java-quadtree', version: '0.1.9'
}

application {
    // Define the main class for the application
    mainClassName = 'emu.grasscutter.Grasscutter'
}

jar {
    manifest {
        attributes 'Main-Class': 'emu.grasscutter.Grasscutter'
    }

    jar.baseName = 'grasscutter'

    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    
    duplicatesStrategy = DuplicatesStrategy.INCLUDE

    from('src/main/java') {
		include '*.xml'
	}

    destinationDir = file(".")
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifactId = 'grasscutter'
            from components.java
            versionMapping {
                usage('java-api') {
                    fromResolutionOf('runtimeClasspath')
                }
                usage('java-runtime') {
                    fromResolutionResult()
                }
            }
            pom {
                name = 'Grasscutter'
                description = 'A server software reimplementation for an anime game.'
                url = 'https://github.com/Grasscutters/Grasscutter'
                licenses {
                    license {
                        name = 'The Apache License, Version 2.0'
                        url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id = 'melledy'
                        name = 'Melledy'
                        email = 'melledy@xigam.tech' // not a real email kek
                    }
                    developer {
                        id = 'magix'
                        name = 'Magix'
                        email = 'magix@xigam.tech'
                    }
                }
                scm {
                    connection = 'scm:git:git@github.com:Grasscutters/Grasscutter.git'
                    developerConnection = 'scm:git:ssh://github.com:Grasscutters/Grasscutter.git'
                    url = 'https://github.com/Grasscutters/Grasscutter'
                }
            }
        }
    }
    repositories {
        maven {
            // change URLs to point to your repos, e.g. http://my.org/repo
            def releasesRepoUrl = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/'
            def snapshotsRepoUrl = 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
            
            name = 'sonatype'
            credentials(PasswordCredentials)
        }
    }
}

signing {
    sign publishing.publications.mavenJava
}

javadoc {
    if(JavaVersion.current().isJava9Compatible()) {
        options.addBooleanOption('html5', true)
    }
}