| /* |
| * 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 |
| } |
| } |
| 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() |
| } |
| } |