blob: ae71e709484290fe72cc7104f8053bceae128053 [file] [log] [blame] [raw]
// Tasks to perform when no task is specified
defaultTasks 'clean', 'build', 'remap'
// Plugins used
apply plugin: 'java' // Specifies a java project
apply plugin: 'application' // Adds the 'run' task
apply plugin: 'project-report' // Adds project report tasks
apply plugin: 'eclipse' // Adds eclipse project tasks
apply plugin: 'idea' // Adds idea project tasks
apply plugin: 'com.github.johnrengelman.shadow' // Provides dependency shading
apply plugin: 'net.glowstone.remapper' // Provides method remapping
apply plugin: 'checkstyle' // Checks code style
apply from: 'etc/publish.gradle'
// Methods to determine detailed version string
def gitDescribe() {
try {
// determine git-describe output
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--always', '--dirty=*'
standardOutput = stdout
}
return stdout.toString().trim()
} catch (e) {
return "unknown"
}
}
def getVersionName() {
try {
// determine git-describe output
def version = gitDescribe()
// add on jenkins or travis build information
def jenkins_build = System.getenv("BUILD_NUMBER")
def travis_build = System.getenv("TRAVIS_BUILD_NUMBER")
if (jenkins_build != null) {
version += "-b" + jenkins_build
} else if (travis_build != null) {
version += "-trv" + travis_build
} else {
version += "-dev"
}
return version
} catch (e) {
return "unknown-version"
}
}
// Basic project information
group = 'net.glowstone'
version = '0.0.1-SNAPSHOT'
description = "Glowstone"
mainClassName = "net.glowstone.GlowServer"
// Extended project information
ext.url = 'https://github.com/GlowstoneMC/Glowstone'
ext.bukkitVersion = '1.8-R1-SNAPSHOT'
ext.gitDescribe = getVersionName()
ext.lombok = 'org.projectlombok:lombok:1.14.8'
// Minimum Java version required
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
// Compile encoding
compileJava {
options.encoding = 'UTF-8'
}
// Simple build script information
buildscript {
repositories {
jcenter()
maven { url "http://repo.glowstone.net/content/groups/public/" }
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:1.1.2'
classpath 'net.glowstone:remapper:1.1'
classpath 'org.ow2.asm:asm:5.0.3'
}
}
// Configuration settings to check for new snapshots
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds' // Always check for new snapshots
}
// Repositories storing our dependencies
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/public/" }
maven { url "http://repo.glowstone.net/content/groups/public/" }
}
// Dependencies used by our project
dependencies {
compile group: 'net.glowstone', name: 'glowkit', version: project.ext.bukkitVersion
compile 'com.flowpowered:flow-networking:1.0.0-SNAPSHOT'
compile 'jline:jline:2.11'
//compile 'mysql:mysql-connector-java:5.1.14'
//compile 'org.xerial:sqlite-jdbc:3.7.2'
compile 'org.slf4j:slf4j-jdk14:1.7.7'
compile lombok
testCompile 'junit:junit:4.8.1'
}
// Checkstyle plugin settings
checkstyle {
configFile = file('etc/checkstyle.xml')
}
// Shadow plugin settings
shadowJar {
dependencies {
exclude(dependency(lombok))
}
}
// Remap plugin settings
remap {
mappingFile = file('etc/remapper.txt')
inputTask = shadowJar
}
// Eclipse project name
eclipse {
project {
name = 'Glowstone'
}
}
// Jar manifest information
jar.manifest.mainAttributes(
'Main-Class': mainClassName,
'Implementation-Title': description,
'Implementation-Version': ext.gitDescribe,
'Implementation-Vendor': 'Glowstone Project',
'Specification-Title': 'Bukkit/Glowkit',
'Specification-Version': ext.bukkitVersion,
'Specification-Vendor': 'Glowstone Project',
'Sealed': true
)