//参考:https://raw.github.com/dm77/barcodescanner/master/build.gradle buildscript { repositories { jcenter() } dependencies { classpath "com.android.tools.build:gradle:${GRADLE_BUILD_VERSION}" classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:${GRADLE_BINTRAY_VERSION}" } } allprojects { group = PROJ_GROUP version = PROJ_VERSION repositories { jcenter() //bintray的maven库 mavenCentral() //sonatype的maven库 mavenLocal() //本地maven库 flatDir { dirs 'libs' //本地.aar文件 } } ext { isLibrary = false pomGroup = PROJ_GROUP pomArtifactId = "library" pomVersion = PROJ_VERSION pomDescription = 'This is library description' } } subprojects { afterEvaluate { Project project -> ext.pluginContainer = project.getPlugins() def hasAppPlugin = ext.pluginContainer.hasPlugin("com.android.application") def hasLibPlugin = ext.pluginContainer.hasPlugin("com.android.library") if (hasAppPlugin || hasLibPlugin) { android { compileSdkVersion COMPILE_SDK_VERSION as int buildToolsVersion BUILD_TOOL_VERSION defaultConfig { minSdkVersion MIN_SDK_VERSION as int targetSdkVersion COMPILE_SDK_VERSION as int versionCode VERSION_CODE as int versionName VERSION_NAME } buildTypes { release { debuggable false minifyEnabled false proguardFile getDefaultProguardFile('proguard-android.txt') } debug { debuggable true minifyEnabled false } } lintOptions { abortOnError false } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' exclude 'META-INF/ASL2.0' } } dependencies { compile "com.android.support:support-v4:${ANDROID_SUPPORT_VERSION}" compile "com.android.support:support-annotations:${ANDROID_SUPPORT_VERSION}" } } if (project.isLibrary) { configure(project) { // 这个脚本是用来发布库项目到jcenter apply plugin: 'com.jfrog.bintray' apply plugin: 'maven-publish' version = project.pomVersion //版本号 group = PROJ_GROUP // 包名 project.archivesBaseName = project.pomArtifactId task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += configurations.compile classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) exclude '**/BuildConfig.java' exclude '**/R.java' failOnError = false } task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir } javadoc { options { encoding "UTF-8" charSet 'UTF-8' author true version true links "http://docs.oracle.com/javase/7/docs/api" title project.pomArtifactId } } publishing { publications { mavenJava(MavenPublication) { artifactId project.pomArtifactId artifact "${buildDir}/outputs/aar/${project.pomArtifactId}-release.aar" artifact javadocJar artifact sourcesJar pom.withXml { Node root = asNode() root.appendNode('name', project.pomArtifactId) root.appendNode('description', project.pomDescription) root.appendNode('url', PROJ_WEBSITE_URL) def issues = root.appendNode('issueManagement') issues.appendNode('system', 'github') issues.appendNode('url', PROJ_ISSUE_URL) def scm = root.appendNode('scm') scm.appendNode('url', PROJ_GIT_URL) scm.appendNode('connection', "scm:git:${PROJ_GIT_URL}") scm.appendNode('developerConnection', "scm:git:${PROJ_GIT_URL}") def license = root.appendNode('licenses').appendNode('license') license.appendNode('name', "The Apache Software License, Version 2.0") license.appendNode('url', "http://www.apache.org/licenses/LICENSE-2.0.txt") license.appendNode('distribution', "repo") def developer = root.appendNode('developers').appendNode('developer') developer.appendNode('id', DEVELOPER_ID) developer.appendNode('name', DEVELOPER_NAME) developer.appendNode('email', DEVELOPER_EMAIL) def dependenciesNode = root.appendNode('dependencies') configurations.compile.allDependencies.each { if (it.group && it.name && it.version) { def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', it.group) dependencyNode.appendNode('artifactId', it.name) dependencyNode.appendNode('version', it.version) } } } } } } afterEvaluate { publishing.publications.mavenJava.artifact(bundleRelease) } bintray { Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") publications = ['mavenJava'] publish = true //是否发布 pkg { repo = "maven" //上传的中央仓库名称 name = project.pomArtifactId //发布到中央仓库上的项目名字 desc = project.pomDescription websiteUrl = PROJ_WEBSITE_URL //项目主页 issueTrackerUrl = PROJ_ISSUE_URL //项目讨论页 vcsUrl = PROJ_GIT_URL //项目GIT仓库 licenses = ["Apache-2.0"] publicDownloadNumbers = true version { name = project.pomVersion desc = project.pomDescription gpg { sign = true //是否GPG签名,可使用Gpg4win创建密钥文件 passphrase = properties.getProperty("bintray.gpg.password") //GPG签名所用密钥 } mavenCentralSync { sync = false //是否同步到Maven Central user = properties.getProperty("sonatype.user") //sonatype用户名 password = properties.getProperty("sonatype.password") //sonatype密码 close = '1' } } } } } } } }