Only create separate zip files for library projects
Change-Id: I10f0b55ba22668ec1418ffa94b0af9888b6d760d
diff --git a/build.gradle b/build.gradle
index fdda8dc0..0ba4716 100644
--- a/build.gradle
+++ b/build.gradle
@@ -367,70 +367,6 @@
maven { url "${project.parent.projectDir}/../../prebuilts/maven_repo/android" }
}
- task release(type: Upload) {
- configuration = configurations.archives
- repositories {
- mavenDeployer {
- repository(url: uri("$rootProject.ext.supportRepoOut"))
-
- // Disable unique names for SNAPSHOTS so they can be updated in place.
- setUniqueVersion(false)
- doLast {
- // Remove any invalid maven-metadata.xml files that may have been created
- // for SNAPSHOT versions that are *not* uniquely versioned.
- pom*.each { pom ->
- if (pom.version.endsWith('-SNAPSHOT')) {
- final File artifactDir = new File(rootProject.ext.supportRepoOut,
- pom.groupId.replace('.', '/')
- + '/' + pom.artifactId
- + '/' + pom.version)
- delete fileTree(dir: artifactDir, include: 'maven-metadata.xml*')
- }
- }
- }
- }
- }
- }
-
- def deployer = release.repositories.mavenDeployer
- deployer.pom*.whenConfigured { pom ->
- pom.dependencies.findAll {dep -> dep.groupId == 'com.android.support' && dep.artifactId != 'support-annotations' }*.type = 'aar'
- }
-
- def versionDir = {
- def groupDir = new File(rootProject.ext.supportRepoOut, project.group.replace('.','/'))
- def artifactDir = new File(groupDir, archivesBaseName)
- return new File(artifactDir, version)
- }
-
- task generateSourceProps(dependsOn: createRepository) << {
- def content = "Maven.GroupId=$deployer.pom.groupId\n" +
- "Maven.ArtifactId=$deployer.pom.artifactId\n" +
- "Maven.Version=$deployer.pom.version\n" +
- "Pkg.Desc=$project.name\n" +
- "Pkg.Revision=1\n" +
- "Dependencies=" +
- String.join(",", project.configurations.compile.allDependencies.collect {
- def p = parent.findProject(it.name)
- return p ? "$p.group:$p.archivesBaseName:$p.version" : null
- }.grep()) +
- "\n"
- Files.write(content, new File(versionDir(), 'source.properties'), Charsets.UTF_8)
- }
-
- task createSeparateZip(type: Zip, dependsOn: generateSourceProps) {
- into archivesBaseName
- destinationDir project.parent.ext.distDir
- baseName = project.group
- version = project.parent.ext.buildNumber
- }
- project.parent.createArchive.dependsOn createSeparateZip
-
- // before the upload, make sure the repo is ready.
- release.dependsOn rootProject.tasks.prepareRepo
- // make the mainupload depend on this one.
- mainUpload.dependsOn release
-
project.plugins.whenPluginAdded { plugin ->
if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)
|| "com.android.build.gradle.AppPlugin".equals(plugin.class.name)) {
@@ -439,13 +375,89 @@
// enabling coverage reports breaks the method parameter resolution in the IDE debugger
project.android.buildTypes.debug.testCoverageEnabled = !hasProperty('android.injected.invoked.from.ide')
}
+
+ // Create release and separate zip task for Android libraries (and android-annotations,
+ // which is just a Java library).
+ if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)
+ || "org.gradle.api.plugins.JavaPlugin".equals(plugin.class.name)) {
+ task release(type: Upload) {
+ configuration = configurations.archives
+ repositories {
+ mavenDeployer {
+ repository(url: uri("$rootProject.ext.supportRepoOut"))
+
+ // Disable unique names for SNAPSHOTS so they can be updated in place.
+ setUniqueVersion(false)
+ doLast {
+ // Remove any invalid maven-metadata.xml files that may have been
+ // created for SNAPSHOT versions that are *not* uniquely versioned.
+ pom*.each { pom ->
+ if (pom.version.endsWith('-SNAPSHOT')) {
+ final File artifactDir = new File(
+ rootProject.ext.supportRepoOut,
+ pom.groupId.replace('.', '/')
+ + '/' + pom.artifactId
+ + '/' + pom.version)
+ delete fileTree(dir: artifactDir,
+ include: 'maven-metadata.xml*')
+ }
+ }
+ }
+ }
+ }
+ }
+
+ def deployer = release.repositories.mavenDeployer
+ deployer.pom*.whenConfigured { pom ->
+ pom.dependencies.findAll { dep ->
+ dep.groupId == 'com.android.support' && dep.artifactId != 'support-annotations'
+ }*.type = 'aar'
+ }
+
+ ext.versionDir = {
+ def groupDir = new File(rootProject.ext.supportRepoOut,
+ project.group.replace('.','/'))
+ def artifactDir = new File(groupDir, archivesBaseName)
+ return new File(artifactDir, version)
+ }
+
+ task generateSourceProps(dependsOn: createRepository) << {
+ def content = "Maven.GroupId=$deployer.pom.groupId\n" +
+ "Maven.ArtifactId=$deployer.pom.artifactId\n" +
+ "Maven.Version=$deployer.pom.version\n" +
+ "Pkg.Desc=$project.name\n" +
+ "Pkg.Revision=1\n" +
+ "Dependencies=" +
+ String.join(",", project.configurations.compile.allDependencies.collect {
+ def p = parent.findProject(it.name)
+ return p ? "$p.group:$p.archivesBaseName:$p.version" : null
+ }.grep()) +
+ "\n"
+ Files.write(content, new File(versionDir(), 'source.properties'), Charsets.UTF_8)
+ }
+
+ task createSeparateZip(type: Zip, dependsOn: generateSourceProps) {
+ into archivesBaseName
+ destinationDir project.parent.ext.distDir
+ baseName = project.group
+ version = project.parent.ext.buildNumber
+ }
+ project.parent.createArchive.dependsOn createSeparateZip
+
+ // before the upload, make sure the repo is ready.
+ release.dependsOn rootProject.tasks.prepareRepo
+ // make the mainupload depend on this one.
+ mainUpload.dependsOn release
+ }
}
project.afterEvaluate {
// The archivesBaseName isn't available intially, so set it now
- def createZipTask = project.tasks.getByName("createSeparateZip")
- createZipTask.appendix = archivesBaseName
- createZipTask.from versionDir()
+ def createZipTask = project.tasks.findByName("createSeparateZip")
+ if (createZipTask != null) {
+ createZipTask.appendix = archivesBaseName
+ createZipTask.from versionDir()
+ }
// Copy instrumentation test APK into the dist dir
def assembleTestTask = project.tasks.findByPath('assembleAndroidTest')