/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // upload anchor for subprojects to upload their artifacts to the local repo. task(mainUpload) task createArchive(type : Zip) { description "Creates a maven repository that includes just the libraries compiled in this" + " project, without any history from prebuilts." from rootProject.ext.supportRepoOut destinationDir rootProject.ext.distDir into 'm2repository' baseName = String.format("top-of-tree-m2repository-%s", project.ext.buildNumber) dependsOn mainUpload } task createDiffArchive(type : Zip) { description "Creates a maven repository that includes just the libraries compiled in this" + " project without any libraries that are already on maven.google.com. If you need " + " a full repo, use createArchive task." dependsOn mainUpload /** * building filters in a doFirst block so that we can query the output of other tasks and also * not query maven.google unless task runs. */ doFirst { def includeFilters = subprojects.collect { it.tasks.withType(Upload) }.findResults { def group = it.project.group[0] def archiveName = it.project.name[0] def version = it.project.version[0] if (group == null || archiveName == null || version == null) { logger.info "null artifact info for ${it.project.path}" return null } def subFolder = group.replace('.', '/') + "/" + archiveName + "/" + version def localFolder = new File(rootProject.ext.supportRepoOut, subFolder) if (!localFolder.exists()) { // no reason to check, not even built logger.info "skipping $subFolder because it does not exist" return null } // query maven.google to check if it is released. if (rootProject.ext.versionChecker.isReleased(group, archiveName, version)) { logger.info "looks like $subFolder is released, skipping" return null } else { logger.info "adding $subFolder to partial maven zip because it cannot be found on" + " maven.google.com" } return subFolder + "/**" } logger.info "include filters for diff maven zip ${includeFilters}" includeFilters.forEach { include it } if (includeFilters.isEmpty()) { // not providing any include would mean include everything so we provide a dummy // include constraint. include "do-not-include-anything" } } from rootProject.ext.supportRepoOut destinationDir rootProject.ext.distDir into 'm2repository' baseName = String.format("gmaven-diff-top-of-tree-m2repository-%s", project.ext.buildNumber) dependsOn mainUpload } // anchor for prepare repo. This is post unzip. task prepareRepo() { description "This task clears the repo folder to ensure that we run a fresh build every" + " time we create arhives. Otherwise, snapshots will accumulate in the builds folder." doFirst { rootProject.ext.supportRepoOut.deleteDir() rootProject.ext.supportRepoOut.mkdirs() } }