blob: 5f331add58538dc3ef36d9a2167bba2be5ee6b7b [file] [log] [blame]
apply plugin: 'groovy'
apply plugin: 'jacoco'
apply plugin: 'clone-artifacts'
apply plugin: 'antlr'
configurations {
provided
includeInJar
}
// Incremental update test support
File classesDir = new File(project.buildDir, "classes/incremental-test")
File baseClasses = new File(classesDir, "base")
File baseInstrumentedClasses = new File(classesDir, "baseInstrumented")
sourceSets {
main {
groovy.srcDirs = ['src/main/groovy', 'src/fromGradle/groovy']
resources.srcDirs = ['src/main/resources', 'src/fromGradle/resources']
compileClasspath += configurations.provided
}
test {
compileClasspath += files(baseClasses)
runtimeClasspath += files(baseInstrumentedClasses)
}
}
ext.proguardVersion = "5.2.1"
dependencies {
compile project(':base:builder')
compile project(':base:lint')
// TODO: Switch to remote dependency once the empty deprecated transform-api is published
compile project(':base:transform-api')
compile project(':base:gradle-api')
compile project(':dataBinding:compilerCommon')
compile 'org.ow2.asm:asm:5.0.3'
compile 'org.ow2.asm:asm-commons:5.0.3'
compile "net.sf.proguard:proguard-gradle:${project.ext.proguardVersion}"
compile "org.jacoco:org.jacoco.core:0.7.4.201502262128"
testCompile project(':base:instant-run:instant-run-annotations')
testCompile project(':base:instant-run:instant-run-runtime')
// Add gradleApi to classpath for compilation, but use provided configuration so that groovy is
// not exposed as a runtime dependency.
provided gradleApi()
testCompile gradleApi()
includeInJar project(':base:instant-run:instant-run-server')
antlr 'org.antlr:antlr:3.5.2'
testCompile 'junit:junit:4.12'
testCompile 'com.google.truth:truth:0.28'
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile 'com.google.guava:guava:17.0'
testCompile project(':base:project-test-lib')
testCompile project(':base:testutils')
}
jar {
into('instant-run') {
from configurations.includeInJar
}
}
tasks.compileJava.dependsOn ":setupGradleInIde"
group = 'com.android.tools.build'
archivesBaseName = 'gradle-core'
version = rootProject.ext.buildVersion
project.ext.pomName = 'Core Library for Android Gradle Plug-in'
project.ext.pomDesc = 'Core library to build Android Gradle plugin.'
apply from: "$rootDir/buildSrc/base/publish.gradle"
apply from: "$rootDir/buildSrc/base/bintray.gradle"
test {
environment("CUSTOM_REPO", rootProject.file("../out/repo"))
testLogging {
events "failed"
}
maxParallelForks = Runtime.runtime.availableProcessors() / 2
}
groovydoc {
exclude "**/internal/**"
includePrivate false
docTitle "Gradle Plugin for Android"
header ""
footer "Copyright (C) 2012 The Android Open Source Project"
overview ""
groovyClasspath = configurations.provided
}
task javadocJar(type: Jar, dependsOn:groovydoc) {
classifier 'javadoc'
from groovydoc.destinationDir
}
// Only package JavaDoc if using --init-script=buildSrc/base/release.gradle
if (project.has("release")) {
artifacts {
archives javadocJar
}
}
// Incremental update test support
String androidJar = System.env.ANDROID_HOME + '/platforms/android-15/android.jar'
Task compileIncrementalTestBaseClasses = tasks.create(
name: "compileIncrementalTestBaseClasses",
type: org.gradle.api.tasks.compile.JavaCompile) {
source = new File(project.getProjectDir(), "src/test/incremental-test-classes/base")
classpath = sourceSets.test.compileClasspath
destinationDir = baseClasses
sourceCompatibility '1.6'
targetCompatibility '1.6'
options.bootClasspath = androidJar
}
compileTestJava.dependsOn compileIncrementalTestBaseClasses
Task instrumentIncrementalTestBaseClasses = tasks.create(
name: "instrumentIncrementalTestBaseClasses",
type: org.gradle.api.tasks.JavaExec) {
main = 'com.android.build.gradle.internal.incremental.IncrementalSupportVisitor'
// jvmArgs = [ '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005']
classpath = sourceSets.main.runtimeClasspath + sourceSets.test.compileClasspath
args baseClasses, baseInstrumentedClasses, androidJar
}
instrumentIncrementalTestBaseClasses.dependsOn compileIncrementalTestBaseClasses
// Compile other changesets. They have the default changset on their classpath.
Task instrumentIncrementalTestPatches = tasks.create("instrumentIncrementalTestPatches")
compileTestJava.dependsOn(
instrumentIncrementalTestPatches,
instrumentIncrementalTestBaseClasses)
File incrementalTestOutDir = new File(classesDir, "patches")
File instrumentedIncrementalTestOutDir = new File(classesDir, "instrumentedPatches")
for (File f: new File(project.projectDir, "src/test/incremental-test-classes/patches").listFiles()) {
File incrementalPatchClassFileDir = new File(incrementalTestOutDir, f.getName())
Task compilePatch = tasks.create(
name: "compileIncrementalTestPatch${f.getName().capitalize()}",
type: org.gradle.api.tasks.compile.JavaCompile) {
source = project.files(f)
classpath = sourceSets.test.compileClasspath
destinationDir = incrementalPatchClassFileDir
sourceCompatibility '1.6'
targetCompatibility '1.6'
options.bootClasspath = androidJar
}
compilePatch.dependsOn compileIncrementalTestBaseClasses
Task instrumentPatch = tasks.create(
name: "instrumentIncrementalTestPatch${f.getName().capitalize()}",
type: org.gradle.api.tasks.JavaExec) {
main = 'com.android.build.gradle.internal.incremental.IncrementalChangeVisitor'
// jvmArgs = [ '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005']
classpath = sourceSets.main.runtimeClasspath + sourceSets.test.compileClasspath
args incrementalPatchClassFileDir, new File(instrumentedIncrementalTestOutDir, f.getName()),
androidJar + File.pathSeparator + baseClasses
}
instrumentPatch.dependsOn(compilePatch)
instrumentIncrementalTestPatches.dependsOn instrumentPatch
}
Task jarIncrementalTests = tasks.create(name: "jarIncrementalTests", type: Jar) {
from sourceSets.test,outputs
into 'build/incrementalTests.jar'
include "com/android/build/gradle/internal/incremental/**"
exclude "com/android/build/gradle/internal/incremental/fixture/**"
}
configurations {
incrementalTestClasses
}
artifacts {
incrementalTestClasses jarIncrementalTests
}
generateGrammarSource {
outputDirectory = new File(outputDirectory,'/com/android/build/gradle/shrinker/parser')
}