Yigit Boyar | b135633 | 2015-05-21 15:49:58 -0700 | [diff] [blame] | 1 | |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 2 | buildscript { |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 3 | ext.dataBindingRootFolder = project.projectDir |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 4 | apply from: 'propLoader.gradle' |
Yigit Boyar | d6ddc64 | 2015-09-11 12:59:40 -0700 | [diff] [blame] | 5 | apply from: 'supportBundle.gradle' |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 6 | ext.addRepos(repositories) |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 7 | if (ext.dataBindingConfig.addRemoteRepos) { |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 8 | dependencies { |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 9 | classpath "com.android.databinding:localizemaven:${dataBindingConfig.extraPluginsVersion}" |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 10 | } |
| 11 | } |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame] | 12 | dependencies { |
| 13 | classpath 'net.sf.proguard:proguard-gradle:5.2.1' |
| 14 | } |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 15 | } |
Yigit Boyar | 840f0ce | 2014-12-12 16:45:00 -0800 | [diff] [blame] | 16 | subprojects { |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 17 | apply plugin: 'maven' |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 18 | if (dataBindingConfig.addRemoteRepos && !dataBindingConfig.forGradlePlugin) { |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 19 | apply plugin: 'com.android.databinding.localizemaven' |
Yigit Boyar | 63d4789 | 2015-07-10 09:03:05 -0700 | [diff] [blame] | 20 | } |
| 21 | |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 22 | if (it.name != "compilationTests") { |
| 23 | group = dataBindingConfig.group |
| 24 | version = dataBindingConfig.version |
| 25 | def url = (!dataBindingConfig.forGradlePlugin && dataBindingConfig.inReleaseBuild && it.name == "library") ? "file://${dataBindingConfig.sharedSupportRepoDir}" : "file://${dataBindingConfig.mavenRepoDir}" |
| 26 | uploadArchives { |
| 27 | repositories { |
| 28 | mavenDeployer { |
| 29 | repository(url: url) |
| 30 | } |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 31 | } |
| 32 | } |
| 33 | } |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 34 | |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 35 | buildscript { |
| 36 | addRepos(repositories) |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 37 | dependencies { |
| 38 | classpath "com.android.databinding:bintray:${dataBindingConfig.extraPluginsVersion}" |
| 39 | } |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 40 | } |
| 41 | } |
| 42 | |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 43 | if (dataBindingConfig.addRemoteRepos && !dataBindingConfig.forGradlePlugin) { |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 44 | localizeMaven { |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 45 | localRepoDir = file(dataBindingConfig.megaRepoDir) |
| 46 | otherRepoDirs = dataBindingConfig.localRepositories |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 47 | } |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 48 | } |
| 49 | |
| 50 | task deleteRepo(type: Delete) { |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 51 | delete "${dataBindingConfig.mavenRepoDir}/${dataBindingConfig.group.replace('.', '/')}" |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 52 | } |
| 53 | |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 54 | task deletePrebuildFolder(type: Delete) { |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 55 | delete "${dataBindingConfig.prebuildFolder}" |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 56 | } |
| 57 | |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 58 | task deleteEap(type: Delete) { |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 59 | delete "${dataBindingConfig.eapOutDir}" |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 60 | } |
| 61 | |
| 62 | |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 63 | def buildExtensionsTask = project.tasks.create "buildExtensionsTask", Exec |
| 64 | buildExtensionsTask.workingDir file('extensions').getAbsolutePath() |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 65 | buildExtensionsTask.commandLine './gradlew' |
Yigit Boyar | b90752c | 2015-09-28 16:42:16 -0700 | [diff] [blame] | 66 | buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace', |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 67 | "-PuseReleaseVersion=${dataBindingConfig.inReleaseBuild ? 'true' : 'false'}", |
| 68 | "-PaddRemoteRepos=${dataBindingConfig.addRemoteRepos ? 'true' : 'false'}", |
| 69 | "-PforGradlePlugin=${dataBindingConfig.forGradlePlugin ? 'true' : 'false'}" |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 70 | buildExtensionsTask.dependsOn subprojects.uploadArchives |
| 71 | |
Yigit Boyar | d6ddc64 | 2015-09-11 12:59:40 -0700 | [diff] [blame] | 72 | tasks['bundleSupportLib'].dependsOn buildExtensionsTask |
| 73 | |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 74 | def prepareExtensionPrebuilds = project.tasks.create "prepareExtensionPrebuilds", Exec |
| 75 | prepareExtensionPrebuilds.workingDir file('extensions').getAbsolutePath() |
| 76 | prepareExtensionPrebuilds.commandLine './gradlew' |
Yigit Boyar | b90752c | 2015-09-28 16:42:16 -0700 | [diff] [blame] | 77 | prepareExtensionPrebuilds.args 'clean', 'preparePrebuilds', '--info', '--stacktrace', |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 78 | "-PuseReleaseVersion=${dataBindingConfig.inReleaseBuild ? 'true' : 'false'}", |
| 79 | "-PaddRemoteRepos=${dataBindingConfig.addRemoteRepos ? 'true' : 'false'}", |
| 80 | "-PforGradlePlugin=${dataBindingConfig.forGradlePlugin ? 'true' : 'false'}" |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 81 | prepareExtensionPrebuilds.dependsOn subprojects.uploadArchives |
| 82 | |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 83 | file('integration-tests').listFiles().findAll { it.isDirectory() }.each { |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 84 | println("Creating run test task for ${it.getAbsolutePath()}.") |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 85 | def testTask = project.tasks.create "runTestsOf${it.getName().capitalize()}", Exec |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 86 | testTask.workingDir it.getAbsolutePath() |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 87 | //on linux |
| 88 | testTask.commandLine './gradlew' |
Yigit Boyar | b90752c | 2015-09-28 16:42:16 -0700 | [diff] [blame] | 89 | testTask.args 'clean', 'connectedCheck', '--info', '--stacktrace', |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 90 | "-PuseReleaseVersion=${dataBindingConfig.inReleaseBuild ? 'true' : 'false'}", |
| 91 | "-PaddRemoteRepos=${dataBindingConfig.addRemoteRepos ? 'true' : 'false'}", |
| 92 | "-PforGradlePlugin=${dataBindingConfig.forGradlePlugin ? 'true' : 'false'}" |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 93 | testTask.dependsOn subprojects.uploadArchives |
| 94 | } |
| 95 | |
| 96 | task runIntegrationTests { |
| 97 | dependsOn tasks.findAll { task -> task.name.startsWith('runTestsOf') } |
| 98 | } |
| 99 | |
| 100 | task runAllTests { |
| 101 | dependsOn runIntegrationTests |
| 102 | } |
| 103 | |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 104 | task preparePrebuilds() { |
| 105 | dependsOn deletePrebuildFolder |
| 106 | dependsOn prepareExtensionPrebuilds |
| 107 | } |
| 108 | |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 109 | allprojects { |
| 110 | afterEvaluate { project -> |
| 111 | runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('test')} |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 112 | runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('connectedCheck')} |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 113 | preparePrebuilds.dependsOn project.tasks.findAll {task -> task.name.startsWith('prebuild')} |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 114 | } |
| 115 | } |
| 116 | |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 117 | subprojects.uploadArchives.each { it.shouldRunAfter deleteRepo } |
Yigit Boyar | ae16128 | 2015-04-21 11:02:58 -0700 | [diff] [blame] | 118 | subprojects.uploadArchives.each { it.shouldRunAfter deletePrebuildFolder } |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 119 | def dataBindingPublishLocal = tasks.create(name: 'publishLocal') |
| 120 | subprojects.uploadArchives.each { |
| 121 | dataBindingPublishLocal.dependsOn(it) |
| 122 | } |
| 123 | |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 124 | buildExtensionsTask.shouldRunAfter deleteRepo |
Yigit Boyar | 99a3d31 | 2015-03-25 12:46:05 -0700 | [diff] [blame] | 125 | tasks['runTestsOfMultiModuleTestApp'].dependsOn tasks['runTestsOfIndependentLibrary'] |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 126 | |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 127 | |
| 128 | task rebuildRepo() { |
| 129 | dependsOn deleteRepo |
| 130 | dependsOn subprojects.uploadArchives |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 131 | } |
| 132 | |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 133 | task copySamplesToEap(type : Copy) { |
| 134 | mustRunAfter deleteEap |
| 135 | from ("$projectDir/samples") { |
| 136 | exclude "**/build" |
Yigit Boyar | 2939c3b | 2015-04-23 15:03:56 -0700 | [diff] [blame] | 137 | exclude "**/local.properties" |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 138 | } |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 139 | into "${dataBindingConfig.eapOutDir}/samples" |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 140 | } |
| 141 | |
| 142 | |
| 143 | task copyMavenRepoToEap(type : Copy) { |
| 144 | mustRunAfter deleteEap |
| 145 | dependsOn rebuildRepo |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 146 | from(dataBindingConfig.mavenRepoDir) |
| 147 | into "${dataBindingConfig.eapOutDir}/${dataBindingConfig.mavenRepoName}" |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 148 | } |
| 149 | |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 150 | tasks.create(name : 'createEapdataBindingConfigFile') << { |
| 151 | def propsFile = new File("${dataBindingConfig.eapOutDir}/databinding.properties") |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 152 | Properties props = new Properties() |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 153 | props.setProperty('version', dataBindingConfig.version) |
| 154 | props.setProperty('mavenRepoName', dataBindingConfig.mavenRepoName) |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 155 | props.store(propsFile.newWriter(), null) |
| 156 | } |
| 157 | |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 158 | task batchEAP() { |
| 159 | dependsOn deleteEap |
| 160 | dependsOn copyMavenRepoToEap |
| 161 | dependsOn copySamplesToEap |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 162 | dependsOn createEapdataBindingConfigFile |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 163 | } |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame] | 164 | |
| 165 | def fullJar(project) { |
| 166 | def localizeTask = project.parent.tasks.findByName('localizeDependencies') |
| 167 | if (localizeTask != null) { |
| 168 | localizeTask.dependsOn project.tasks.findByName('buildLicenseNotice') |
| 169 | } |
| 170 | |
Yigit Boyar | 499caca | 2015-10-30 17:09:12 +0000 | [diff] [blame] | 171 | if (!dataBindingConfig.runProguard) { |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame] | 172 | return |
| 173 | } |
| 174 | def jarName = project.uploadArchives.repositories.mavenDeployer.pom.artifactId |
| 175 | def workingDir = "${project.buildDir}/intermediates/fullJar" |
| 176 | def fatJar = "${workingDir}/${jarName}-fat.jar" |
| 177 | def proguardJar = "${workingDir}/${jarName}-proguard.jar" |
| 178 | def jarJar = project.jar.archivePath |
| 179 | |
| 180 | project.configurations { |
| 181 | jarJarArchives |
| 182 | } |
| 183 | |
| 184 | project.tasks.create(name: 'fatJar', type: Jar) { |
| 185 | baseName = jarName + '-fat' |
| 186 | doFirst { |
| 187 | file(workingDir).mkdirs() |
| 188 | } |
| 189 | def deps = new HashSet<ResolvedDependency>() |
| 190 | project.configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each { |
| 191 | if (!it.moduleGroup.startsWith('com.android.tools')) { |
| 192 | deps.addAll(it.allModuleArtifacts) |
| 193 | } |
| 194 | } |
Yigit Boyar | 499caca | 2015-10-30 17:09:12 +0000 | [diff] [blame] | 195 | from { deps.findAll { !it.name.contains('baseLibrary') && !it.name.contains("juniversalchardet")}.collect { |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame] | 196 | it.file.isDirectory() ? it.file : project.zipTree(it.file) |
| 197 | } } { |
| 198 | exclude "META-INF/maven/**" |
| 199 | exclude "META-INF/MANIFEST.MF" |
| 200 | exclude "META-INF/LICENSE.txt" |
| 201 | exclude "META-INF/NOTICE.txt" |
| 202 | exclude "META-INF/services/javax.annotation.processing.Processor" |
| 203 | exclude "**/*.stg" |
| 204 | } |
| 205 | archiveName "${baseName}.jar" |
| 206 | destinationDir = new File(workingDir) |
| 207 | with project.jar |
| 208 | } |
| 209 | project.tasks.create(name: 'proguard', type: proguard.gradle.ProGuardTask) { |
| 210 | dependsOn 'fatJar' |
| 211 | |
| 212 | injars fatJar |
| 213 | outjars proguardJar |
| 214 | |
| 215 | configuration '../proguard.cfg' |
| 216 | } |
| 217 | |
| 218 | project.tasks.create(name: 'jarJarFile') { |
| 219 | dependsOn 'proguard' |
| 220 | dependsOn project.jar |
| 221 | def inputLibrary = proguardJar |
| 222 | def outputLibrary = jarJar |
| 223 | inputs.file(inputLibrary) |
| 224 | outputs.file(outputLibrary) |
| 225 | |
| 226 | doLast { |
Yigit Boyar | 9784c9a | 2015-10-12 18:59:27 -0700 | [diff] [blame] | 227 | def jarJarLibrary = new File(dataBindingConfig.externalPrebuiltsBase, |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame] | 228 | 'tools/common/m2/repository/com/googlecode/jarjar/jarjar/1.3/jarjar-1.3.jar'). |
| 229 | getCanonicalPath() |
| 230 | // in Ant |
| 231 | ant.taskdef(name: "jarjarIt", |
| 232 | classname: 'com.tonicsystems.jarjar.JarJarTask', |
| 233 | classpath: jarJarLibrary) |
| 234 | // start jarjar task |
| 235 | ant.jarjarIt(jarfile: outputLibrary) { |
| 236 | // input is our inputLibrary |
| 237 | zipfileset(src: inputLibrary) |
| 238 | // rule to repackage antlr to new package |
| 239 | rule pattern: 'org.antlr.**', result: 'com.google.repacked.antlr.@1' |
| 240 | rule pattern: 'com.tunnelvisionlabs.**', result: 'com.google.repacked.tunnelvision.@1' |
Yigit Boyar | 499caca | 2015-10-30 17:09:12 +0000 | [diff] [blame] | 241 | rule pattern: 'org.abego.treelayout.**', result: 'com.google.repacked.treelayout.@1' |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame] | 242 | // rule to repackage commons |
| 243 | rule pattern: 'org.apache.**', result: 'com.google.repacked.apache.@1' |
| 244 | rule pattern: 'kotlin.**', result: 'com.google.repacked.kotlin.@1' |
| 245 | } |
| 246 | } |
| 247 | } |
| 248 | |
| 249 | project.uploadArchives { |
| 250 | dependsOn 'jarJarFile' |
| 251 | repositories { |
| 252 | mavenDeployer { |
| 253 | pom.whenConfigured { pom -> |
| 254 | pom.dependencies.removeAll { dep -> |
| 255 | def isBaseLibrary = dep.groupId == 'com.android.databinding' && |
| 256 | dep.artifactId == 'baseLibrary' |
| 257 | def isGradle = dep.groupId == 'com.android.tools.build' && |
| 258 | dep.artifactId == 'gradle' |
Yigit Boyar | 499caca | 2015-10-30 17:09:12 +0000 | [diff] [blame] | 259 | def isChardet = dep.groupId == 'com.googlecode.juniversalchardet' && |
| 260 | dep.artifactId == 'juniversalchardet' |
| 261 | return !isBaseLibrary && !isGradle && !isChardet |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame] | 262 | } |
| 263 | } |
| 264 | } |
| 265 | } |
| 266 | } |
| 267 | } |