181 lines
5.9 KiB
Groovy
181 lines
5.9 KiB
Groovy
/*
|
|
* Copyright (C) 2014 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.
|
|
*/
|
|
import com.android.build.api.transform.Format;
|
|
import com.android.build.api.transform.QualifiedContent;
|
|
import com.android.build.api.transform.QualifiedContent.ContentType;
|
|
import com.android.build.api.transform.QualifiedContent.Scope;
|
|
import com.android.build.api.transform.Transform;
|
|
import com.android.build.api.transform.Context;
|
|
import com.android.build.api.transform.TransformInput;
|
|
import com.android.build.api.transform.TransformOutputProvider;
|
|
import com.android.build.api.transform.TransformException;
|
|
import com.android.build.gradle.internal.pipeline.TransformManager;
|
|
// Top-level build file where you can add dataBindingConfiguration options common to all sub-projects/modules.
|
|
|
|
buildscript {
|
|
dependencies {
|
|
classpath "com.android.tools.build:gradle:${dataBindingConfig.androidPluginVersion}"
|
|
// NOTE: Do not place your application dependencies here; they belong
|
|
// in the individual module build.gradle files
|
|
}
|
|
}
|
|
|
|
apply plugin: 'com.android.library'
|
|
|
|
android {
|
|
compileSdkVersion dataBindingConfig.compileSdkVersion
|
|
buildToolsVersion dataBindingConfig.buildToolsVersion
|
|
|
|
defaultConfig {
|
|
minSdkVersion 7
|
|
targetSdkVersion 23
|
|
versionCode 1
|
|
versionName "1.0"
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility dataBindingConfig.javaTargetCompatibility
|
|
targetCompatibility dataBindingConfig.javaSourceCompatibility
|
|
}
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
}
|
|
}
|
|
packagingOptions {
|
|
exclude 'META-INF/services/javax.annotation.processing.Processor'
|
|
exclude 'META-INF/LICENSE.txt'
|
|
exclude 'META-INF/NOTICE.txt'
|
|
exclude 'android/databinding/DataBinderMapper.class'
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
jarArchives
|
|
}
|
|
|
|
|
|
dependencies {
|
|
compile 'com.android.support:support-v4:21.0.3'
|
|
compile "com.android.databinding:baseLibrary:${dataBindingConfig.version}"
|
|
}
|
|
|
|
//create jar tasks
|
|
android.libraryVariants.all { variant ->
|
|
def name = variant.buildType.name
|
|
|
|
if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
|
|
return; // Skip debug builds.
|
|
}
|
|
def suffix = name.capitalize()
|
|
|
|
def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
|
|
source variant.javaCompile.source
|
|
options.showFromPublic()
|
|
options.tags = ['hide']
|
|
classpath = files(variant.javaCompile.classpath.files) + files(
|
|
"${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
|
|
}
|
|
|
|
def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
|
|
classifier = 'javadoc'
|
|
from 'build/docs/javadoc'
|
|
}
|
|
javadocJarTask.dependsOn javadocTask
|
|
|
|
def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
|
|
classifier = 'sources'
|
|
from android.sourceSets.main.java.srcDirs
|
|
}
|
|
|
|
artifacts.add('archives', javadocJarTask);
|
|
artifacts.add('archives', sourcesJarTask);
|
|
}
|
|
uploadArchives {
|
|
repositories {
|
|
mavenDeployer {
|
|
pom.artifactId = 'library'
|
|
pom.project {
|
|
licenses {
|
|
license {
|
|
name dataBindingConfig.licenseName
|
|
url dataBindingConfig.licenseUrl
|
|
distribution dataBindingConfig.licenseDistribution
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
class ExcludeShimTransform extends Transform {
|
|
Project project;
|
|
public ExcludeShimTransform(Project project) {
|
|
this.project = project;
|
|
}
|
|
public Set<ContentType> getInputTypes() {
|
|
return TransformManager.CONTENT_CLASS;
|
|
}
|
|
|
|
public Set<Scope> getScopes() {
|
|
def result = new HashSet<Scope>();
|
|
result.add(Scope.PROJECT);
|
|
return result;
|
|
}
|
|
|
|
public Set<Scope> getReferencedScopes() {
|
|
return TransformManager.SCOPE_FULL_LIBRARY;
|
|
}
|
|
|
|
public boolean isIncremental() {
|
|
return false;
|
|
}
|
|
|
|
public String getName() {
|
|
return "DataBindingExcludeShimTransform";
|
|
}
|
|
|
|
public void transform(Context context, Collection<TransformInput> inputs,
|
|
Collection<TransformInput> referencedInputs,
|
|
TransformOutputProvider outputProvider,
|
|
boolean isIncremental) throws IOException, TransformException, InterruptedException {
|
|
inputs.each { transformInput ->
|
|
transformInput.getDirectoryInputs().each {
|
|
File outputDir = outputProvider.getContentLocation("data-binding-filtered",
|
|
it.getContentTypes(), it.getScopes(), Format.DIRECTORY);
|
|
outputDir.delete();
|
|
outputDir.mkdirs();
|
|
FileTree tree = project.fileTree(dir: it.getFile())
|
|
tree.include '**/*.class'
|
|
tree.exclude 'android/databinding/DataBindingComponent.*'
|
|
tree.exclude 'android/databinding/DataBinderMapper.*'
|
|
tree.copy {
|
|
into outputDir
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
android.registerTransform(new ExcludeShimTransform(project))
|
|
|
|
task prebuildAar(type : Copy) {
|
|
dependsOn uploadArchives
|
|
from "$buildDir/outputs/aar/library-release.aar"
|
|
into dataBindingConfig.prebuildFolder
|
|
rename { String fileName ->
|
|
"databinding-library.aar"
|
|
}
|
|
}
|