gradle maven 发布带源码

1,367 阅读1分钟

下面代码保存到rootProject/gradle目录下的publishNexus.gradle文件

apply plugin: 'maven-publish'


afterEvaluate {
    publishing {
        publications {
            maven(MavenPublication) {
                if (isAndroidProject()) {
                    from components.release
                    artifact androidSourcesJar
                } else {
                    from components.java
                }

                groupId = GROUP_ID
                artifactId = ARTIFACT_ID
                version = VERSION

                pom {
                    // scm配置官网链接:https://maven.apache.org/pom.html#SCM
                    scm {
                        connection = SCM_CONNECTION
                        url = SCM_URL
                    }
                }
            }
        }
        repositories {
            maven {
                url = isReleaseBuild() ? project.RELEASE_MAVEN_URL : project.SNAPSHOT_MAVEN_URL
                credentials {
                    username = project.hasProperty('NEXUS_USERNAME') ? project.NEXUS_USERNAME : ''
                    password = project.hasProperty('NEXUS_PASSWORD') ? project.NEXUS_PASSWORD : ''
                }
            }
        }

        publishToMavenLocal.dependsOn(assemble)
        publish.dependsOn(assemble)
    }
}


java {
    withSourcesJar()
}

task androidSourcesJar(type: Jar) {
    archiveClassifier.set('sources')
    from android.sourceSets.main.java.srcDirs
}

boolean isReleaseBuild() {
    return !VERSION.contains("SNAPSHOT")
}

boolean isAndroidProject() {
    return project.plugins.hasPlugin("com.android.library") || project.plugins.hasPlugin("com.android.application")
}

module目录下创建/修改文件gradle.properties,添加内容

GROUP_ID=com.yourgroup
ARTIFACT_ID=artifact-name
#VERSION=0.1.0-SNAPSHOT
VERSION=0.1.0
SCM_CONNECTION="scm:git:ssh://gerrit.yourgroup.com/project"
SCM_URL="https://gerrit.yourgroup.com/project"
DESCRIPTION=project-name

# maven
RELEASE_MAVEN_URL=http://maven.yourgroup.com/content/repositories/releases/
SNAPSHOT_MAVEN_URL=http://maven.yourgroup.com/content/repositories/snapshots/

# 可以放到全局位置 ~/.gradle/gradle.properties
NEXUS_USERNAME=
NEXUS_PASSWORD=

在module的build.gradle文件结尾添加

apply from: "${rootProject.projectDir}/gradle/publishNexus.gradle"