blob: 5f1bffc1c12dbd5a435952ed9ed4795d18d6df37 [file] [log] [blame]
apply plugin: 'groovy'
apply plugin: 'idea'
apply plugin: 'code-quality'
group = 'org.codehaus.groovy'
version = groovyVersion
sourceCompatibility = 1.5
targetCompatibility = 1.5
buildDir = 'target'
repositories {
// todo Some repos are needed only for some configs. Declare them just for the configuration once Gradle allows this.
mavenRepo urls: ["http://repo1.maven.org/maven2"] // default, tools
mavenRepo urls: ["http://www.aQute.biz/repo"] // examples
mavenRepo urls: ["http://repository.jboss.org/maven2"] // examples, tools
}
// todo do we need compile and runtime scope for examples?
configurations {
tools
examplesCompile.extendsFrom compile
examplesRuntime.extendsFrom examplesCompile
antlr
}
dependencies {
groovy files("$buildDir/classes")
groovy "asm:asm:3.3.1"
groovy "antlr:antlr:2.7.7"
groovy "asm:asm-commons:3.3.1"
groovy "asm:asm-util:3.3.1"
groovy "asm:asm-analysis:3.3.1"
groovy "asm:asm-tree:3.3.1"
compile("bsf:bsf:2.4.0") {
exclude(group: 'commons-logging', module: 'commons-logging')
}
compile "junit:junit:4.10"
compile "commons-cli:commons-cli:1.2"
compile "org.apache.ant:ant:1.8.2"
compile "javax.servlet:servlet-api:2.4"
compile "javax.servlet:jsp-api:2.0"
compile("com.thoughtworks.xstream:xstream:1.4.1") {
exclude(group: 'xpp3', module: 'xpp3_min')
exclude(group: 'junit', module: 'junit')
exclude(group: 'jmock', module: 'jmock')
}
compile("jline:jline:0.9.94") {
exclude(group: 'junit', module: 'junit')
}
compile "org.fusesource.jansi:jansi:1.7"
compile("org.apache.ivy:ivy:2.2.0") {
transitive = false
}
runtime "org.apache.ant:ant-junit:1.8.2"
runtime "org.apache.ant:ant-launcher:1.8.2"
runtime "org.apache.ant:ant-antlr:1.8.2"
runtime("commons-logging:commons-logging:1.1.1") {
exclude(group: 'log4j', module: 'log4j')
exclude(group: 'logkit', module: 'logkit')
exclude(group: 'avalon-framework', module: 'avalon-framework')
}
testCompile "jmock:jmock:1.2.0"
testCompile "jmock:jmock-cglib:1.2.0"
testCompile "xmlunit:xmlunit:1.3"
testCompile "hsqldb:hsqldb:1.8.0.10"
testCompile "ch.qos.logback:logback-classic:0.9.21"
testCompile "log4j:log4j:1.2.16"
testCompile "org.slf4j:jcl-over-slf4j:1.6.0"
testCompile "com.thoughtworks.qdox:qdox:1.12"
testCompile "org.apache.ant:ant-testutil:1.8.2"
runtime "org.codehaus.gpars:gpars:0.12"
// todo this was provided
compile "org.livetribe:livetribe-jsr223:2.0.6"
tools "com.googlecode.jarjar:jarjar:1.1"
tools("checkstyle:checkstyle:4.4") {
exclude(module: 'junit')
}
tools "redhill:simian:2.2.4"
tools("net.sourceforge.cobertura:cobertura:1.9.4.1") {
exclude(module: 'asm')
exclude(module: 'asm')
exclude(module: 'ant')
}
tools "asm:asm:3.3.1"
tools "com.thoughtworks.qdox:qdox:1.12"
tools "biz.aQute:bnd:0.0.401"
examplesCompile "lucene:lucene:1.4.3"
examplesCompile "org.eclipse:osgi:3.5.0.v20090520"
examplesRuntime("commons-httpclient:commons-httpclient:3.1") {
exclude(module: 'junit')
exclude(module: 'commons-logging')
exclude(module: 'commons-codec')
}
examplesRuntime("openejb:openejb-loader:1.0") {
exclude(module: 'log4j')
exclude(module: 'openejb-core')
exclude(module: 'geronimo-jta_1.0.1B_spec')
exclude(module: 'geronimo-servlet_2.4_spec')
exclude(module: 'geronimo-ejb_2.1_spec')
exclude(module: 'geronimo-j2ee-connector_1.5_spec')
}
antlr "org.apache.ant:ant-antlr:1.8.2"
}
sourceSets {
main {
java {
srcDirs = ["$projectDir/src/main"]
fileTree("$projectDir/src/main/groovy/ui").matching {
exclude 'GroovyMain.java', 'GroovySocketServer.java'
}.visit {details ->
exclude "groovy/ui/$details.path"
}
}
groovy {
srcDirs = ["$projectDir/src/main"]
}
resources {
srcDirs = ["$projectDir/src/main", "$projectDir/src/tools"]
include "META-INF/services/*", "META-INF/groovy-release-info.properties",
"groovy/grape/*.xml", "groovy/ui/*.properties", "groovy/ui/**/*.png",
"groovy/inspect/swingui/AstBrowserProperties.groovy",
"org/codehaus/groovy/tools/shell/**/*.properties",
"org/codehaus/groovy/tools/shell/**/*.xml",
"org/codehaus/groovy/antlib.xml",
"org/codehaus/groovy/tools/groovydoc/gstringTemplates/**/*.*",
"org/codehaus/groovy/tools/groovy.ico"
}
classesDir = "$buildDir/classes" as File
}
test {
groovy {
srcDirs = ["$projectDir/src/test"]
if (!isJava16()) {
exclude "groovy/**/vm6/*Test.groovy"
exclude "org/codehaus/groovy/**/vm6/*Test.groovy"
}
}
classesDir = "$buildDir/test-classes" as File
}
tools {
groovy {
srcDirs = ["$projectDir/src/tools"]
}
resources {
srcDirs = ["$projectDir/src/tools"]
}
compileClasspath = configurations.tools + sourceSets.main.runtimeClasspath
runtimeClasspath = classes + compileClasspath
classesDir = "$buildDir/tools-classes" as File
}
examples {
groovy {
srcDirs = ["$projectDir/src/examples"]
}
resources {
srcDirs = ["$projectDir/src/examples"]
}
compileClasspath = configurations.examplesRuntime + sourceSets.main.classes
classesDir = "$buildDir/examples-classes" as File
}
}
// remove this from config once GRADLE-854 is fixed.
processResources.doLast {
copy {
from("$projectDir/src/main") {
include "groovy/inspect/swingui/AstBrowserProperties.groovy",
"org/codehaus/groovy/tools/groovydoc/gstringTemplates/GroovyDocTemplateInfo.java"
}
into sourceSets.main.classesDir
}
}
task ensureGrammars {
description = "Ensure all the Antlr generated files are up to date."
antlrDirectory = "$projectDir/src/main/org/codehaus/groovy/antlr"
groovyParserDirectory = "$antlrDirectory/parser"
javaParserDirectory = "$antlrDirectory/java"
doFirst {
ant {
taskdef(name: 'antlr',
classname: 'org.apache.tools.ant.taskdefs.optional.ANTLR',
classpath: configurations.antlr.asPath)
mkdir dir: groovyParserDirectory
antlr(target: "$antlrDirectory/groovy.g", outputdirectory: groovyParserDirectory) {
classpath path: configurations.compile.asPath
}
antlr(target: "$javaParserDirectory/java.g", outputdirectory: javaParserDirectory) {
classpath path: configurations.compile.asPath
}
}
}
}
compileJava {
dependsOn ensureGrammars
doLast {
mkdir "$sourceSets.main.classesDir/META-INF"
ant {
java(classname: "org.codehaus.groovy.tools.DgmConverter",
fork: "true",
failonerror: "true",
outputproperty: 'outy',
errorproperty: 'errr',
classpath: sourceSets.main.runtimeClasspath.asPath)
}
// println "Out: " + ant.properties.outy
// println "Err: " + ant.properties.errr
}
}
compileGroovy {
groovyOptions.fork(memoryMaximumSize: groovycMain_mx)
}
compileTestGroovy {
groovyOptions.fork(memoryMaximumSize: groovycTest_mx)
}
compileExamplesGroovy {
groovyOptions.fork(memoryMaximumSize: groovycExamples_mx)
}
def isJava16() {
System.properties['java.version'].contains('1.6')
}
// suppress CheckStyle
task checkstyleExamples(overwrite: true) << {};
task checkstyleMain(overwrite: true) << {};
task checkstyleTest(overwrite: true) << {};
task checkstyleTools(overwrite: true) << {};
codeNarcConfigFileName = "./config/codenarc/codenarc.groovy"
// ignore CodeNarc on examples
task codenarcExamples(overwrite: true) << {};
// don't fail build on CodeNarc tasks
tasks.withType(CodeNarc).all { codeNarcTask ->
codeNarcTask.ignoreFailures = true
}
// provide to other build scripts
isJava6 = this.&isJava16()
apply from: "$projectDir/gradle/test.gradle"
apply from: "$projectDir/gradle/docs.gradle"
apply from: "$projectDir/gradle/assemble.gradle"
apply from: "$projectDir/gradle/upload.gradle"
task wrapper(type: Wrapper) {
// gradleVersion = '1.0-milestone-5-20110929000016+0200'
// distributionUrl = "http://repo.gradle.org/gradle/distributions-snapshots/gradle-${gradleVersion}-bin.zip"
gradleVersion = '0.9.2'
}