使用gradle上传源码到maven仓库

使用gradle上传源码到maven仓库

我一直比较好奇,为何贴上compile ‘com.github.Tumbler0809:tool:0.0.3’这样的一句话就可以吧源码依赖到项目里面去,好神奇的一个东西,于是百度了一下,知道是和maven相关或者Jcenter有关,然后看了下面一篇文章:

这里讲述上传到maven仓库,至于Jcenter自己去捣鼓吧,我注册个账号都废了好大的劲儿,我觉得吧只要能compile ‘com.github.Tumbler0809:tool:0.0.3’这样子就好了,达到目的就行,步骤如下:

  • 首先,在https://issues.sonatype.org中注册账号。(英文网站看不懂的谷歌翻译)
  • 然后在https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134中新建一个“Project ticket”这个相当于在github上建了一个仓库一样,但是好像在github上一个仓库相当于装一个项目,但是这里只要申请一次以后项目有多少个都可以放这个下。

使用gradle上传源码到maven仓库_第1张图片

照着这个填,我的github的地址是tumbler0809.github.io,域名反转过来就是io.github.tumbler0809, groupid可以填这个,也可以填com.github.tumbler0809,这里的是个域名填错了的话,就会被拒绝,填对了话别人审核的时候status的状态才会变成resolved,这样才可以上传,否则上传不了,Project URL是我们要上传的源码在github上的地址,还有SCM url:,如下:
使用gradle上传源码到maven仓库_第2张图片

  • 接下来认为自己创建好了就是等待status的状态变成RESOLVED
  • 状态变成RESOLVED的时候就去下载一个签名工具https://www.gnupg.org/download/index.html,下载免费版本的,网页英文的,翻译一下找免费版本如下,我的是window系统,安装

使用gradle上传源码到maven仓库_第3张图片
使用gradle上传源码到maven仓库_第4张图片
- 接下来就是用这个软件生成.gpg文件参考这篇文章http://blog.csdn.net/qiujuer/article/details/44173611,要把这个软件里面的账号密码给记住,在gradle中需要配置,导出里面的.gpg文件同时还要一个asc文件,吧asc里面的内容复制提交到http://keyserver.ubuntu.com/这个网站sumblit,提交成功后输入你之前在软件里面填写的邮箱,就可以搜到你上传的东东,我的是这样子的
使用gradle上传源码到maven仓库_第5张图片
- 接下来就是配置gradle了参考这个https://github.com/chrisbanes/gradle-mvn-push照着里面的配置,需要注意的几点我说明一下:
里面要配置在自己本机电脑的一个文件,里面有生成.gpg文件的那个软件的用户名和密码还有sonatype的账号密码,我的电脑里是在这里,你们对号入座:
使用gradle上传源码到maven仓库_第6张图片

还有在project里面的gradle.properties里面的配置如下,记得是project下的,不是modle下的
使用gradle上传源码到maven仓库_第7张图片
然后就是modle里面的gradle.properties,我的张这样:
使用gradle上传源码到maven仓库_第8张图片
modle下的build.gradle下我的长这样,自己对号入座看:
//下面是吧代码上传到maven仓库的配置

apply plugin: 'maven'
apply plugin: 'signing'

def isReleaseBuild() {
    return VERSION_NAME.contains("SNAPSHOT") == false
}

def getReleaseRepositoryUrl() {
    return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
            : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}

def getSnapshotRepositoryUrl() {
    return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
            : "https://oss.sonatype.org/content/repositories/snapshots/"
}

def getRepositoryUsername() {
    return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}

def getRepositoryPassword() {
    return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}

afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

                pom.groupId = GROUP
                pom.artifactId = POM_ARTIFACT_ID
                pom.version = VERSION_NAME

                repository(url: getReleaseRepositoryUrl()) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
                snapshotRepository(url: getSnapshotRepositoryUrl()) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }

                pom.project {
                    name POM_NAME
                    packaging POM_PACKAGING
                    description POM_DESCRIPTION
                    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
                        }
                    }
                }
            }
        }
    }

    signing {
        required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
        sign configurations.archives
    }

    task androidJavadocs(type: Javadoc) {
        options.encoding = "utf-8"
        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.sourceFiles
    }

    artifacts {
        archives androidSourcesJar
        archives androidJavadocsJar
    }
}
  • 接下来就是配置gradle环境变量(已配置的省略,没配置的百度),然后配好了就到你要上传的modle目录下执行命令gradle clean build uploadArchives,成功。

  • 到这个网站https://oss.sonatype.org/ 找到你上传的项目,close,然后relase参考这篇文章,http://blog.csdn.net/qiujuer/article/details/44195131

还有不明白的到 234456543群问我,我会一一解答,谢谢,文章太长了都快写断气了,555…….

你可能感兴趣的:(android项目开发经验)