Merge "Bring back <type>aar</type> hack." into oc-mr1-support-27.0-dev
diff --git a/buildSrc/dependencies.gradle b/buildSrc/dependencies.gradle
index ef538d1..5a3a06b 100644
--- a/buildSrc/dependencies.gradle
+++ b/buildSrc/dependencies.gradle
@@ -41,7 +41,7 @@
 }
 
 //arch components
-libs.arch_lifecycle_runtime = "android.arch.lifecycle:runtime:1.0.0"
+libs.arch_lifecycle_runtime = "android.arch.lifecycle:runtime:1.0.0@aar"
 
 // Other dependencies
 libs.xml_parser_apis = 'xerces:xmlParserAPIs:2.6.2'
diff --git a/buildSrc/src/main/groovy/android/support/SupportLibraryMavenUploader.groovy b/buildSrc/src/main/groovy/android/support/SupportLibraryMavenUploader.groovy
index 7f942e1..957cae8 100644
--- a/buildSrc/src/main/groovy/android/support/SupportLibraryMavenUploader.groovy
+++ b/buildSrc/src/main/groovy/android/support/SupportLibraryMavenUploader.groovy
@@ -16,9 +16,11 @@
 
 package android.support
 
+import com.android.build.gradle.LibraryPlugin
 import com.google.common.collect.ImmutableMap
 import org.gradle.api.Action
 import org.gradle.api.Project
+import org.gradle.api.artifacts.ProjectDependency
 import org.gradle.api.artifacts.maven.MavenDeployer
 import org.gradle.api.tasks.Upload
 
@@ -66,6 +68,21 @@
                                 }
                             }
                         }
+
+                        uploadTask.doFirst {
+                            Set<ProjectDependency> allDeps = new HashSet<>();
+                            collectDependenciesForConfiguration(allDeps, project, "api");
+                            collectDependenciesForConfiguration(allDeps, project, "implementation");
+                            collectDependenciesForConfiguration(allDeps, project, "compile");
+
+                            mavenDeployer.getPom().whenConfigured {
+                                it.dependencies.forEach { dep ->
+                                    if (isAndroidProject(dep.groupId, dep.artifactId, allDeps)) {
+                                        dep.type = "aar"
+                                    }
+                                }
+                            }
+                        }
                     }
                 });
             } else {
@@ -73,4 +90,23 @@
             }
         }
     }
+
+    private static void collectDependenciesForConfiguration(Set<ProjectDependency> dependencies,
+            Project project, String name) {
+        def config = project.configurations.findByName(name);
+        if (config != null) {
+            config.dependencies.withType(ProjectDependency.class).forEach {
+                dep -> dependencies.add(dep)
+            }
+        }
+    }
+
+    private static boolean isAndroidProject(String groupId, String artifactId, Set<ProjectDependency> deps) {
+        for (ProjectDependency dep : deps) {
+            if (dep.group == groupId && dep.name == artifactId) {
+                return dep.getDependencyProject().plugins.hasPlugin(LibraryPlugin.class)
+            }
+        }
+        return false;
+    }
 }
\ No newline at end of file
diff --git a/compat/build.gradle b/compat/build.gradle
index 4d869b8..1e5d847 100644
--- a/compat/build.gradle
+++ b/compat/build.gradle
@@ -4,6 +4,7 @@
     api project(':support-annotations')
     api (libs.arch_lifecycle_runtime)  {
         exclude module: 'support-annotations'
+        transitive = true
     }
 
     androidTestImplementation libs.test_runner,      { exclude module: 'support-annotations' }