84 lines
3.6 KiB
Groovy
84 lines
3.6 KiB
Groovy
/*
|
|
* 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()
|
|
}
|
|
}
|