Skip to content

Instantly share code, notes, and snippets.

@wangjiegulu
Last active July 23, 2018 07:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save wangjiegulu/8c5da796bf6a43af5a2d6abbc5d590c7 to your computer and use it in GitHub Desktop.
Save wangjiegulu/8c5da796bf6a43af5a2d6abbc5d590c7 to your computer and use it in GitHub Desktop.
maven upload gradle

in library:

apply from: '../mavenupload/maven_push.gradle'

maven_push.gradle:

ext.mvnType = "central"

tasks.withType(Javadoc) {
    options.addStringOption('Xdoclint:none', '-quiet')
    options.addStringOption('encoding', 'UTF-8')
    options.addStringOption('charSet', 'UTF-8')
}

if (project.getPlugins().hasPlugin('com.android.application') ||
        project.getPlugins().hasPlugin('com.android.library')) {
    apply from: "$project.rootDir/mavenupload/$mvnType/maven_push_aar.gradle"
} else if (project.getPlugins().hasPlugin('java')) {
    apply from: "$project.rootDir/mavenupload/$mvnType/maven_push_jar.gradle"
}

maven_push_aar.gradle:

// ********************************** upload archives ***********************************

apply plugin: 'maven'
apply plugin: 'signing' //使用signing plugin做数字签名

//定义GroupID和Version,ArtefactID会自动使用Project名
group = "$ARCHIVE_GROUP"
version = "$ARCHIVE_VERSION_NAME"

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.source
}

artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}

signing {
    sign configurations.archives
}

uploadArchives {
    repositories {
        mavenDeployer {
            //为Pom文件做数字签名
            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

            //指定项目部署到的中央库地址,UserName和Password就是Part 1中注册的账号。
            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: "$ossrhUsername", password: "$ossrhPassword")
            }
            snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
                authentication(userName: "$ossrhUsername", password: "$ossrhPassword")
            }

            //构造项目的Pom文件,参见Part 2中Pom文件的规范,不要遗漏必填项
            pom.project {
                name "$POM_ARCHIVE_ID"
                artifactId "$POM_ARCHIVE_ID"
                packaging 'aar'
                description "$POM_DESC"
                url "$POM_URL"

                scm {
                    url "$POM_SCM_URL"
                    connection "$POM_SCM_CONNECTION"
                    developerConnection "$POM_SCM_DEV_CONNECTION"
                }

                licenses {
                    license {
                        name POM_LICENCE_NAME
                        url POM_LICENCE_URL
                        distribution POM_LICENCE_DIST
                    }
                }

                developers {
                    developer {
                        id POM_DEVELOPER_ID
                        name POM_DEVELOPER_NAME
                        email POM_DEVELOPER_EMAIL
                    }
                }
            }
        }
    }
}

maven_push_jar.gradle:

// ********************************** upload archives ***********************************

apply plugin: 'maven'
apply plugin: 'signing' //使用signing plugin做数字签名

//定义GroupID和Version,ArtefactID会自动使用Project名
group = "$ARCHIVE_GROUP"
version = "$ARCHIVE_VERSION_NAME"

task sourcesJar(type: Jar, dependsOn:classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn:javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives javadocJar, sourcesJar
}



signing {
    sign configurations.archives
}

uploadArchives {
    repositories {
        mavenDeployer {
            //为Pom文件做数字签名
            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

            //指定项目部署到的中央库地址,UserName和Password就是Part 1中注册的账号。
            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: "$ossrhUsername", password: "$ossrhPassword")
            }
            snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
                authentication(userName: "$ossrhUsername", password: "$ossrhPassword")
            }

            //构造项目的Pom文件,参见Part 2中Pom文件的规范,不要遗漏必填项
            pom.project {
                artifactId "$POM_ARCHIVE_ID"
                name "$POM_ARCHIVE_ID"
                packaging 'jar'
                description "$POM_DESC"
                url "$POM_URL"

                scm {
                    url "$POM_SCM_URL"
                    connection "$POM_SCM_CONNECTION"
                    developerConnection "$POM_SCM_DEV_CONNECTION"
                }

                licenses {
                    license {
                        name POM_LICENCE_NAME
                        url POM_LICENCE_URL
                        distribution POM_LICENCE_DIST
                    }
                }

                developers {
                    developer {
                        id POM_DEVELOPER_ID
                        name POM_DEVELOPER_NAME
                        email POM_DEVELOPER_EMAIL
                    }
                }
            }
        }
    }
}

module gradle.properties(jar, aar):

POM_ARCHIVE_ID=rapidorm-api

project gradle.properties:

## Maven upload
##################### account info #####################
# configuration in ~/.gradle/gradle.properties
# signing.keyId=xxx
# signing.password=xxx
# signing.secretKeyRingFile=xxx
# ossrhUsername=xxx
# ossrhPassword=xxx

##################### project info #####################
ARCHIVE_GROUP=com.github.wangjiegulu
ARCHIVE_VERSION_NAME=2.2.0

POM_DESC=Quick solutions for Android ORM
POM_URL=https://github.com/wangjiegulu/RapidORM
POM_SCM_URL=scm:git@github.com:wangjiegulu/RapidORM.git
POM_SCM_CONNECTION=scm:git@github.com:wangjiegulu/RapidORM.git
POM_SCM_DEV_CONNECTION=git@github.com:wangjiegulu/RapidORM.git

POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=wangjie
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment