Merge "Merge cherrypicks of [1003088, 1003089] into androidx-media-release" into androidx-media-release
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
index 05a2090..1da0d62 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
@@ -77,6 +77,13 @@
 import java.util.concurrent.ConcurrentHashMap
 
 /**
+ * Setting this property indicates that a build is being performed to check for forward
+ * compatibility.
+ */
+const val USE_MAX_DEP_VERSIONS = "useMaxDepVersions"
+const val BUILD_INFO_DIR = "build-info"
+
+/**
  * A plugin which enables all of the Gradle customizations for AndroidX.
  * This plugin reacts to other plugins being added and adds required and optional functionality.
  */
@@ -585,7 +592,7 @@
                     CREATE_LIBRARY_BUILD_INFO_FILES_TASK,
                     CreateLibraryBuildInfoFileTask::class.java
                 ) {
-                    it.outputFile.set(File(project.getDistributionDirectory(),
+                    it.outputFile.set(File(project.getBuildInfoDirectory(),
                         "${project.group}_${project.name}_build_info.txt"))
                 }
                 project.rootProject.tasks.named(CREATE_LIBRARY_BUILD_INFO_FILES_TASK).configure {
diff --git a/buildSrc/src/main/kotlin/androidx/build/BuildServerConfiguration.kt b/buildSrc/src/main/kotlin/androidx/build/BuildServerConfiguration.kt
index b48db5c..4d065ed 100644
--- a/buildSrc/src/main/kotlin/androidx/build/BuildServerConfiguration.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/BuildServerConfiguration.kt
@@ -46,6 +46,12 @@
 }
 
 /**
+ * Directory to put build info files for release service dependency files.
+ */
+fun Project.getBuildInfoDirectory(): File =
+        File(getDistributionDirectory(), "build-info")
+
+/**
  * Directory to put host test results so they can be consumed by the testing dashboard.
  */
 fun Project.getHostTestResultDirectory(): File =
diff --git a/buildSrc/src/main/kotlin/androidx/build/CreateAggregateLibraryBuildInfoFileTask.kt b/buildSrc/src/main/kotlin/androidx/build/CreateAggregateLibraryBuildInfoFileTask.kt
index 5b2ef16..2db3f6f 100644
--- a/buildSrc/src/main/kotlin/androidx/build/CreateAggregateLibraryBuildInfoFileTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/CreateAggregateLibraryBuildInfoFileTask.kt
@@ -50,7 +50,7 @@
     }
 
     private data class AllLibraryBuildInfoFiles(
-        val Artifacts: ArrayList<LibraryBuildInfoFile>
+        val artifacts: ArrayList<LibraryBuildInfoFile>
     )
 
     /**
@@ -63,7 +63,7 @@
         val gson = Gson()
         val jsonString: String = jsonFile.readText(Charsets.UTF_8)
         val aggregateBuildInfoFile = gson.fromJson(jsonString, AllLibraryBuildInfoFiles::class.java)
-        aggregateBuildInfoFile.Artifacts.forEach { artifact ->
+        aggregateBuildInfoFile.artifacts.forEach { artifact ->
             if (!artifactList.contains("${artifact.groupId}_${artifact.artifactId}")) {
                 println("Failed to find ${artifact.artifactId} in artifact list!")
                 return false
@@ -83,7 +83,7 @@
         // Loop through each file in the list of libraryBuildInfoFiles and collect all build info
         // data from each of these $groupId-$artifactId-_build_info.txt files
         var output = StringBuilder()
-        output.append("{ \"Artifacts\": [\n")
+        output.append("{ \"artifacts\": [\n")
         var artifactList = mutableListOf<String>()
         for (infoFile in libraryBuildInfoFiles.get()) {
             if ((infoFile.isFile and (infoFile.name != outputFile.name))
diff --git a/buildSrc/src/main/kotlin/androidx/build/CreateLibraryBuildInfoFileTask.kt b/buildSrc/src/main/kotlin/androidx/build/CreateLibraryBuildInfoFileTask.kt
index 83a3906..0e12bcd 100644
--- a/buildSrc/src/main/kotlin/androidx/build/CreateLibraryBuildInfoFileTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/CreateLibraryBuildInfoFileTask.kt
@@ -46,10 +46,10 @@
     }
 
     private fun writeJsonToFile(info: LibraryBuildInfoFile) {
-        if (!project.getDistributionDirectory().exists()) {
-            if (!project.getDistributionDirectory().mkdirs()) {
+        if (!project.getBuildInfoDirectory().exists()) {
+            if (!project.getBuildInfoDirectory().mkdirs()) {
                 throw RuntimeException("Failed to create " +
-                        "output directory: ${project.getDistributionDirectory()}")
+                        "output directory: ${project.getBuildInfoDirectory()}")
             }
         }
         var resolvedOutputFile: File = outputFile.get()