Own-Programming-Language-Tu.../build.gradle

101 lines
2.9 KiB
Groovy

apply plugin: 'java'
sourceCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
if (!hasProperty('mainClass')) {
ext.mainClass = 'com.annimon.ownlang.Main'
}
ext.generatedJavaDir = "${rootProject.projectDir}/src/main/generatedJava"
sourceSets.main.java.srcDirs += project.generatedJavaDir
repositories {
jcenter()
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'net.sf.proguard:proguard-gradle:5.2.1'
}
}
task generateJavaSources() {
doLast {
def source = """
package com.annimon.ownlang;
class Gen {
public static final String BUILD_DATE = "${new Date().format('YYMMdd')}";
}
"""
def genFile = new File("${project.generatedJavaDir}/com/annimon/ownlang/Gen.java")
genFile.getParentFile().mkdirs()
genFile.write(source)
}
}
compileJava.dependsOn(generateJavaSources)
task run(dependsOn: classes, type: JavaExec) {
main = project.mainClass
classpath = sourceSets.main.runtimeClasspath
standardInput = System.in
ignoreExitValue = true
}
task runOptimizing(dependsOn: classes, type: JavaExec) {
main = project.mainClass
classpath = sourceSets.main.runtimeClasspath
ignoreExitValue = true
// args '-o 9 -m -a -f examples/game/minesweeper.own'.split(' ')
args '-o 9 -m -a -f program.own'.split(' ')
}
task dist(dependsOn: classes, type: Jar) {
from files(sourceSets.main.output.classesDir)
from files(sourceSets.main.output.resourcesDir)
from {configurations.compile.collect {zipTree(it)}}
destinationDir file("$rootProject.projectDir/dist")
manifest.attributes(
'Main-Class': project.mainClass,
'Build-Date': new Date().format('YYMMdd')
)
}
task proguard(dependsOn: dist, type: proguard.gradle.ProGuardTask) {
configuration "$rootProject.projectDir/proguard.properties"
injars "$rootProject.projectDir/dist/OwnLang.jar"
outjars "$rootProject.projectDir/store/OwnLang.jar"
}
task sandbox(dependsOn: proguard, type: Jar) {
from zipTree("$rootProject.projectDir/store/OwnLang.jar")
libsDirName = "$rootProject.projectDir/store"
appendix = "Sandbox"
exclude "**/modules/canvas/**", "**/modules/canvasfx/**", "**/modules/forms/**",
"**/modules/java/**", "**/modules/jdbc/**", "**/modules/robot/**",
"**/modules/socket/**", "io/**",
"**/modules/aimp/**", "aimpremote/**",
"**/modules/downloader/**"
manifest {
attributes 'Main-Class': project.mainClass
}
}
dependencies {
compile ('io.socket:socket.io-client:0.7.0') {
exclude group: 'org.json', module: 'json'
}
compile 'org.json:json:20160212'
compile 'org.yaml:snakeyaml:1.17'
testCompile 'junit:junit:4.12'
testCompile 'org.openjdk.jmh:jmh-core:1.13'
testCompile 'org.openjdk.jmh:jmh-generator-annprocess:1.13'
}