Files
Aria/gradle/mavenCentral-release.gradle

237 lines
9.6 KiB
Groovy
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 "https://docs.oracle.com/javase/8/docs/api/"
addStringOption('Xdoclint:none', '-quiet') // 忽略检查@params 和 @return
}
}
ext["signing.keyId"] = null
ext["signing.password"] = null
ext["signing.secretKeyRingFile"] = null
ext["ossrhUsername"] = null
ext["ossrhPassword"] = null
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 project.findProperty('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 project.PUBLISH_ARTIFACT_ID
version PUBLISH_VERSION
if (isAndroidProject) {
// 移除R文件移除BuildConfig文件
project.tasks.findByName('generateReleaseBuildConfig')?.enabled = false
project.tasks.findByName('generateDebugBuildConfig')?.enabled = false
project.tasks.findByName('generateReleaseResValues')?.enabled = false
project.tasks.findByName('generateDebugResValues')?.enabled = false
// 使用了这个组件就不需要自己aar、pom.withxml了
def releaseComponent = project.components.findByName('release')
if (releaseComponent != null) {
from releaseComponent
}
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"
def androidJavadocs = project.task("androidJavadocs", type: Javadoc, dependsOn: 'assembleDebug') {
println("开始打包aar")
source = variants.collect { it.getJavaCompileProvider().get().source }
classpath = project.files(
getAndroidJar,
project.file("build/intermediates/classes/debug")
)
doFirst {
classpath += project.files(variants.collect { it.javaCompileProvider.get().classpath.files })
}
options {
// links("https://docs.oracle.com/javase/8/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 = project.task("cleanJavadocTask", type: Delete) {
delete androidJavadocs.destinationDir
}
project.clean.dependsOn(cleanJavadocTask)
def androidJavadocsJar = project.task("androidJavadocsJar", type: Jar, dependsOn: androidJavadocs) {
archiveClassifier = 'javadoc'
archiveBaseName = "${JAR_PREFIX}${project.PUBLISH_ARTIFACT_ID}"
}
def androidSourcesJar = project.task("androidSourcesJar", type: Jar) {
archiveClassifier = 'sources'
from project.android.sourceSets.main.java.source
archiveBaseName = "${JAR_PREFIX}${project.PUBLISH_ARTIFACT_ID}"
exclude "**/R.class"
exclude "**/BuildConfig.class"
}
def compileDebugJavaWithJavac = project.tasks.findByName('compileDebugJavaWithJavac')
def androidLibraryJar = project.task("androidLibraryJar", type: Jar, dependsOn: 'compileDebugJavaWithJavac') {
// java 编译后的 class文件, build/intermediates/classes/debug/
if (compileDebugJavaWithJavac != null) {
from compileDebugJavaWithJavac.destinationDir
}
// kotlin 编译后的 class文件
from 'build/tmp/kotlin-classes/debug/'
// 指定需要被打包成 jar 的文件夹
// include('libs/**')
exclude '**/R.class'
exclude '**/R$*.class'
exclude "**/BuildConfig.class"
archiveBaseName = "${JAR_PREFIX}${project.name}-cache"
}
artifact androidLibraryJar
artifact androidSourcesJar
artifact androidJavadocsJar
} else if (project.plugins.hasPlugin('java')) {
def javaComponent = project.components.findByName('java')
if (javaComponent != null) {
from javaComponent
}
def sourcesJar = project.task("sourcesJar", type: Jar, dependsOn: 'classes') {
archiveClassifier = 'sources'
from project.sourceSets.main.allSource
}
def javadocsJar = project.task("javadocsJar", type: Jar, dependsOn: 'javadoc') {
archiveClassifier = 'javadoc'
from project.javadoc.destinationDir
}
artifact sourcesJar
artifact javadocsJar
}
pom {
name = project.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 {
required { !isLocal() && project.findProperty("signing.keyId") }
sign publishing.publications
}
}