Data binding as studio dep + java6
This CL gets rid of the gradle plugin and instead provides
DataBindingBuilder for the gradle plugin to directly use.
Now, everything that is deployed via SDK Manager (lib and adapters)
are included as prebuilts so that we avoid accidently changing
them w/o an SDK manager release.
There is still work to do:
> re-enable proguard for externel dependencies
> release a batch to ensure everything works
Bug: 22516688
Change-Id: I83ace15bd6d3d23bf5b4ad850f36453dd23ebd43
diff --git a/build.gradle b/build.gradle
index 2560b4f..00b1206 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,12 +1,12 @@
buildscript {
- ext.rootFolder = project.projectDir
+ ext.dataBindingRootFolder = project.projectDir
apply from: 'propLoader.gradle'
apply from: 'supportBundle.gradle'
ext.addRepos(repositories)
- if (ext.config.addRemoteRepos) {
+ if (ext.dataBindingConfig.addRemoteRepos) {
dependencies {
- classpath "com.android.databinding:localizemaven:${config.extraPluginsVersion}"
+ classpath "com.android.databinding:localizemaven:${dataBindingConfig.extraPluginsVersion}"
}
}
dependencies {
@@ -15,45 +15,48 @@
}
subprojects {
apply plugin: 'maven'
- if (config.addRemoteRepos) {
+ if (dataBindingConfig.addRemoteRepos && !dataBindingConfig.forGradlePlugin) {
apply plugin: 'com.android.databinding.localizemaven'
}
- group = config.group
- version = config.version
- def url = (config.inReleaseBuild && it.name == "library") ? "file://${config.sharedSupportRepoDir}" : "file://${config.mavenRepoDir}"
- uploadArchives {
- repositories {
- mavenDeployer {
- repository(url: url)
+ if (it.name != "compilationTests") {
+ group = dataBindingConfig.group
+ version = dataBindingConfig.version
+ def url = (!dataBindingConfig.forGradlePlugin && dataBindingConfig.inReleaseBuild && it.name == "library") ? "file://${dataBindingConfig.sharedSupportRepoDir}" : "file://${dataBindingConfig.mavenRepoDir}"
+ uploadArchives {
+ repositories {
+ mavenDeployer {
+ repository(url: url)
+ }
}
}
}
+
buildscript {
addRepos(repositories)
- dependencies {
- classpath "com.android.databinding:bintray:${config.extraPluginsVersion}"
- }
+ dependencies {
+ classpath "com.android.databinding:bintray:${dataBindingConfig.extraPluginsVersion}"
+ }
}
}
-if (config.addRemoteRepos) {
+if (dataBindingConfig.addRemoteRepos && !dataBindingConfig.forGradlePlugin) {
localizeMaven {
- localRepoDir = file(config.megaRepoDir)
- otherRepoDirs = config.localRepositories
+ localRepoDir = file(dataBindingConfig.megaRepoDir)
+ otherRepoDirs = dataBindingConfig.localRepositories
}
}
task deleteRepo(type: Delete) {
- delete "${config.mavenRepoDir}/${config.group.replace('.', '/')}"
+ delete "${dataBindingConfig.mavenRepoDir}/${dataBindingConfig.group.replace('.', '/')}"
}
task deletePrebuildFolder(type: Delete) {
- delete "${config.prebuildFolder}"
+ delete "${dataBindingConfig.prebuildFolder}"
}
task deleteEap(type: Delete) {
- delete "${config.eapOutDir}"
+ delete "${dataBindingConfig.eapOutDir}"
}
@@ -61,8 +64,9 @@
buildExtensionsTask.workingDir file('extensions').getAbsolutePath()
buildExtensionsTask.commandLine './gradlew'
buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace',
- "-PuseReleaseVersion=${config.inReleaseBuild ? 'true' : 'false'}",
- "-PaddRemoteRepos=${config.addRemoteRepos ? 'true' : 'false'}"
+ "-PuseReleaseVersion=${dataBindingConfig.inReleaseBuild ? 'true' : 'false'}",
+ "-PaddRemoteRepos=${dataBindingConfig.addRemoteRepos ? 'true' : 'false'}",
+ "-PforGradlePlugin=${dataBindingConfig.forGradlePlugin ? 'true' : 'false'}"
buildExtensionsTask.dependsOn subprojects.uploadArchives
tasks['bundleSupportLib'].dependsOn buildExtensionsTask
@@ -71,8 +75,9 @@
prepareExtensionPrebuilds.workingDir file('extensions').getAbsolutePath()
prepareExtensionPrebuilds.commandLine './gradlew'
prepareExtensionPrebuilds.args 'clean', 'preparePrebuilds', '--info', '--stacktrace',
- "-PuseReleaseVersion=${config.inReleaseBuild ? 'true' : 'false'}",
- "-PaddRemoteRepos=${config.addRemoteRepos ? 'true' : 'false'}"
+ "-PuseReleaseVersion=${dataBindingConfig.inReleaseBuild ? 'true' : 'false'}",
+ "-PaddRemoteRepos=${dataBindingConfig.addRemoteRepos ? 'true' : 'false'}",
+ "-PforGradlePlugin=${dataBindingConfig.forGradlePlugin ? 'true' : 'false'}"
prepareExtensionPrebuilds.dependsOn subprojects.uploadArchives
file('integration-tests').listFiles().findAll { it.isDirectory() }.each {
@@ -82,10 +87,10 @@
//on linux
testTask.commandLine './gradlew'
testTask.args 'clean', 'connectedCheck', '--info', '--stacktrace',
- "-PuseReleaseVersion=${config.inReleaseBuild ? 'true' : 'false'}",
- "-PaddRemoteRepos=${config.addRemoteRepos ? 'true' : 'false'}"
+ "-PuseReleaseVersion=${dataBindingConfig.inReleaseBuild ? 'true' : 'false'}",
+ "-PaddRemoteRepos=${dataBindingConfig.addRemoteRepos ? 'true' : 'false'}",
+ "-PforGradlePlugin=${dataBindingConfig.forGradlePlugin ? 'true' : 'false'}"
testTask.dependsOn subprojects.uploadArchives
- testTask.dependsOn buildExtensionsTask
}
task runIntegrationTests {
@@ -111,6 +116,11 @@
subprojects.uploadArchives.each { it.shouldRunAfter deleteRepo }
subprojects.uploadArchives.each { it.shouldRunAfter deletePrebuildFolder }
+def dataBindingPublishLocal = tasks.create(name: 'publishLocal')
+subprojects.uploadArchives.each {
+ dataBindingPublishLocal.dependsOn(it)
+}
+
buildExtensionsTask.shouldRunAfter deleteRepo
tasks['runTestsOfMultiModuleTestApp'].dependsOn tasks['runTestsOfIndependentLibrary']
@@ -118,7 +128,6 @@
task rebuildRepo() {
dependsOn deleteRepo
dependsOn subprojects.uploadArchives
- dependsOn buildExtensionsTask
}
task copySamplesToEap(type : Copy) {
@@ -127,31 +136,30 @@
exclude "**/build"
exclude "**/local.properties"
}
- into "${config.eapOutDir}/samples"
+ into "${dataBindingConfig.eapOutDir}/samples"
}
task copyMavenRepoToEap(type : Copy) {
mustRunAfter deleteEap
dependsOn rebuildRepo
- from(config.mavenRepoDir)
- into "${config.eapOutDir}/${config.mavenRepoName}"
+ from(dataBindingConfig.mavenRepoDir)
+ into "${dataBindingConfig.eapOutDir}/${dataBindingConfig.mavenRepoName}"
}
-tasks.create(name : 'createEapConfigFile') << {
- def propsFile = new File("${config.eapOutDir}/databinding.properties")
+tasks.create(name : 'createEapdataBindingConfigFile') << {
+ def propsFile = new File("${dataBindingConfig.eapOutDir}/databinding.properties")
Properties props = new Properties()
- props.setProperty('version', config.version)
- props.setProperty('mavenRepoName', config.mavenRepoName)
+ props.setProperty('version', dataBindingConfig.version)
+ props.setProperty('mavenRepoName', dataBindingConfig.mavenRepoName)
props.store(propsFile.newWriter(), null)
}
-
task batchEAP() {
dependsOn deleteEap
dependsOn copyMavenRepoToEap
dependsOn copySamplesToEap
- dependsOn createEapConfigFile
+ dependsOn createEapdataBindingConfigFile
}
def fullJar(project) {
@@ -160,7 +168,7 @@
localizeTask.dependsOn project.tasks.findByName('buildLicenseNotice')
}
- if (!config.inReleaseBuild) {
+ if (!dataBindingConfig.inReleaseBuild || !dataBindingConfig.runProguard) {
return
}
def jarName = project.uploadArchives.repositories.mavenDeployer.pom.artifactId
@@ -216,7 +224,7 @@
outputs.file(outputLibrary)
doLast {
- def jarJarLibrary = new File(config.externalPrebuiltsBase,
+ def jarJarLibrary = new File(dataBindingConfig.externalPrebuiltsBase,
'tools/common/m2/repository/com/googlecode/jarjar/jarjar/1.3/jarjar-1.3.jar').
getCanonicalPath()
// in Ant