parent
							
								
									6eab496b6a
								
							
						
					
					
						commit
						ebbbbee1f8
					
				| @ -0,0 +1,216 @@ | ||||
| apply plugin: 'maven-publish' | ||||
| apply plugin: 'signing' | ||||
| 
 | ||||
| ext { | ||||
|   PUBLISH_GROUP_ID = rootProject.ext.mavenCentralGroupId | ||||
|   PUBLISH_VERSION = rootProject.ext.mavenVersion | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| //编译groovy代码时采用 UTF-8 | ||||
| tasks.withType(GroovyCompile) { | ||||
|   groovyOptions.encoding = "UTF-8" | ||||
| } | ||||
| //编译JAVA文件时采用UTF-8 | ||||
| tasks.withType(JavaCompile) { | ||||
|   options.encoding = "UTF-8" | ||||
| } | ||||
| 
 | ||||
| // java doc 采用utf-8 | ||||
| // https://docs.gradle.org/current/dsl/org.gradle.api.tasks.javadoc.Javadoc.html#org.gradle.api.tasks.javadoc.Javadoc:options | ||||
| tasks.withType(Javadoc) { | ||||
|   if(JavaVersion.current().isJava9Compatible()) { | ||||
|     options.addBooleanOption('html5', true) | ||||
|   } | ||||
|   options { | ||||
|     encoding "UTF-8" | ||||
|     charSet 'UTF-8' | ||||
|     links "http://docs.oracle.com/javase/7/docs/api" | ||||
|     addStringOption('Xdoclint:none', '-quiet') // 忽略检查@params 和 @return | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| ext["signing.keyId"] = '' | ||||
| ext["signing.password"] = '' | ||||
| ext["signing.secretKeyRingFile"] = '' | ||||
| ext["ossrhUsername"] = '' | ||||
| ext["ossrhPassword"] = '' | ||||
| 
 | ||||
| File secretPropsFile = project.rootProject.file('local.properties') | ||||
| if (secretPropsFile.exists()) { | ||||
|   println "Found secret props file, loading props" | ||||
|   Properties p = new Properties() | ||||
|   p.load(new FileInputStream(secretPropsFile)) | ||||
|   p.each { name, value -> | ||||
|     ext[name] = value | ||||
|   } | ||||
| } else { | ||||
|   println "No props file, loading env vars" | ||||
| } | ||||
| 
 | ||||
| static def localMavenRepo() { | ||||
|   'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath | ||||
| } | ||||
| 
 | ||||
| def getReleaseRepositoryUrl() { | ||||
|   return isLocal() ? localMavenRepo() | ||||
|       : hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL | ||||
|       : 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/' | ||||
| } | ||||
| 
 | ||||
| def getSnapshotRepositoryUrl() { | ||||
|   return isLocal() ? localMavenRepo() | ||||
|       : hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL | ||||
|       : 'https://s01.oss.sonatype.org/content/repositories/snapshots/' | ||||
| } | ||||
| 
 | ||||
| def isLocal(){ | ||||
|   return ISLOCAL == 'true' | ||||
| } | ||||
| 
 | ||||
| afterEvaluate { project -> | ||||
|   if (isLocal()) { | ||||
|     println("上传到本地仓库") | ||||
|   } else { | ||||
|     println("上传到中央仓库") | ||||
|   } | ||||
|   publishing { | ||||
|     def isAndroidProject = project.plugins.hasPlugin('com.android.application') || project. | ||||
|         plugins. | ||||
|         hasPlugin('com.android.library') | ||||
|     publications { | ||||
|       release(MavenPublication) { | ||||
|         // groupId 等信息 | ||||
|         groupId PUBLISH_GROUP_ID | ||||
|         artifactId PUBLISH_ARTIFACT_ID | ||||
|         version PUBLISH_VERSION | ||||
| 
 | ||||
|         if (isAndroidProject) { | ||||
|           // 移除R文件,移除BuildConfig文件 | ||||
|           generateReleaseBuildConfig.enabled = false | ||||
|           generateDebugBuildConfig.enabled = false | ||||
|           generateReleaseResValues.enabled = false | ||||
|           generateDebugResValues.enabled = false | ||||
|           // 使用了这个组件,就不需要自己aar、pom.withxml了 | ||||
|           from components.release | ||||
| 
 | ||||
|           def variants = project.android.libraryVariants.findAll { | ||||
|             it.buildType.name.equalsIgnoreCase('debug') | ||||
|           } | ||||
| 
 | ||||
|           def getAndroidSdkDirectory = project.android.sdkDirectory | ||||
| 
 | ||||
|           def getAndroidJar = "${getAndroidSdkDirectory}/platforms/${project.android.compileSdkVersion}/android.jar" | ||||
| 
 | ||||
|           task androidJavadocs(type: Javadoc, dependsOn: assembleDebug) { | ||||
|             println("开始打包aar") | ||||
|             source = variants.collect { it.getJavaCompileProvider().get().source } | ||||
|             classpath = files( | ||||
|                 getAndroidJar, | ||||
|                 project.file("build/intermediates/classes/debug") | ||||
|             ) | ||||
|             doFirst { | ||||
|               classpath += files(variants.collect { it.javaCompile.classpath.files }) | ||||
|             } | ||||
|             options { | ||||
|               links("http://docs.oracle.com/javase/7/docs/api/") | ||||
|               linksOffline("http://d.android.com/reference", | ||||
|                   "${getAndroidSdkDirectory}/docs/reference") | ||||
|               encoding "UTF-8" | ||||
|               charSet 'UTF-8' | ||||
|               addStringOption('Xdoclint:none', '-quiet') // 忽略检查@params 和 @return | ||||
|             } | ||||
| 
 | ||||
|             exclude '**/R.java' | ||||
|             exclude "**/BuildConfig.class" | ||||
|           } | ||||
| 
 | ||||
|           def cleanJavadocTask = task("cleanJavadocTask", type: Delete) { | ||||
|             delete androidJavadocs.destinationDir | ||||
|           } as Task | ||||
|           project.clean.dependsOn(cleanJavadocTask) | ||||
| 
 | ||||
|           task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { | ||||
|             classifier = 'javadoc' | ||||
|             from androidJavadocs.destinationDir | ||||
|             baseName "${JAR_PREFIX}${project.name}" | ||||
|           } | ||||
| 
 | ||||
|           task androidSourcesJar(type: Jar) { | ||||
|             classifier = 'sources' | ||||
|             from project.android.sourceSets.main.java.source | ||||
|             baseName "${JAR_PREFIX}${project.name}" | ||||
| 
 | ||||
|             exclude "**/R.class" | ||||
|             exclude "**/BuildConfig.class" | ||||
|           } | ||||
| 
 | ||||
|           task androidLibraryJar(type: Jar, dependsOn: compileDebugJavaWithJavac | ||||
|               /* == variant.javaCompile */) { | ||||
|             // java 编译后的 class文件, build/intermediates/classes/debug/ | ||||
|             from compileDebugJavaWithJavac.destinationDir | ||||
|             //  kotlin 编译后的 class文件 | ||||
|             from 'build/tmp/kotlin-classes/debug/' | ||||
|             //    指定需要被打包成 jar 的文件夹 | ||||
|             //            include('libs/**') | ||||
|             exclude '**/R.class' | ||||
|             exclude '**/R$*.class' | ||||
|             exclude "**/BuildConfig.class" | ||||
|             baseName "${JAR_PREFIX}${project.name}-cache" | ||||
|           } | ||||
| 
 | ||||
|           artifact androidLibraryJar | ||||
|           artifact androidSourcesJar | ||||
|           artifact androidJavadocsJar | ||||
| 
 | ||||
|         } else if (project.plugins.hasPlugin('java')) { | ||||
|           from components.java | ||||
|         } | ||||
| 
 | ||||
|         pom { | ||||
|           name = PUBLISH_ARTIFACT_ID | ||||
|           description = rootProject.ext.desc | ||||
|           url = rootProject.ext.website | ||||
|           licenses { | ||||
|             license { | ||||
|               //协议类型,一般默认Apache License2.0的话不用改: | ||||
|               name = rootProject.ext.mavenCentralLicences | ||||
|               url = rootProject.ext.mavenCentralLicencesURL | ||||
|             } | ||||
|           } | ||||
|           developers { | ||||
|             developer { | ||||
|               id = rootProject.ext.mavenCentralUserID | ||||
|               name = rootProject.ext.mavenCentralUserName | ||||
|               email = rootProject.ext.mavenCentralEmail | ||||
|             } | ||||
|           } | ||||
|           scm { | ||||
|             //修改成你的Git地址: | ||||
|             connection = rootProject.ext.mavenCentralConnection | ||||
|             developerConnection = rootProject.ext.mavenCentralDeveloperConnection | ||||
|             //分支地址: | ||||
|             url = rootProject.ext.mavenCentralTreeURL | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     repositories { | ||||
|       maven { | ||||
|         name = "mavencentral" | ||||
| 
 | ||||
|         def releasesRepoUrl = getReleaseRepositoryUrl() | ||||
|         def snapshotsRepoUrl = getSnapshotRepositoryUrl() | ||||
|         url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl | ||||
| 
 | ||||
|         credentials { | ||||
|           username ossrhUsername | ||||
|           password ossrhPassword | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   signing { | ||||
|     sign publishing.publications | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue