美文网首页Android 移动 前端 Python Android Java
快速搭建本地代码仓库并实现Gradle脚本发布

快速搭建本地代码仓库并实现Gradle脚本发布

作者: QiuJay | 来源:发表于2016-04-21 16:26 被阅读2431次

    做为一名有经验的安卓开发人员,相信大家都知道Maven仓库与Jcenter仓库,这是目前全球最常用的两个,其中Jcenter是目前最大的一个Java与Android开源软件构建仓库,而且我们经常用的Android Studio就是默认支持Jcenter

    材料

    步骤

    1. 解压下载下来的zip压缩包,目录结构如下[version | 4.7.4]:


      dir-list
    2. 保证系统环境当前已经配置了Java环境,并版本1.8或以上
    3. Linux直接命令行启动“artifactory.sh”
    4. Linux下当启动成功后,命令行会出现如下提示:


      linux-started
    5. 测试访问:http://localhost:8081/artifactory,账号:admin;密码:password
      home
    6. 至此就成功了!简单吧,基本没有任何技术问题

    实现Gradle脚本发布

    • 首先加载Gradle插件
    dependencies {
            classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.1.1'
    }
    
    • 完整发布代码<假设此文件名为local-maven.gradle>
    apply plugin: 'com.jfrog.artifactory'
    apply plugin: 'maven-publish'
    
    def artifactVersion = '1.0-SNAPSHOT'//发布的版本
    
    publishing {
        publications {
            aar(MavenPublication) {
                groupId = 'lsw.widget'
                artifactId project.name
                version = artifactVersion
                artifact "${project.buildDir}/outputs/aar/${project.name}-release.aar"
            }
        }
    }
    artifactory {
        contextUrl = "http://localhost:8081/artifactory"//本地仓库地址
        publish {
            repository {
                /**
                repoKey:指定发布到的仓库名称
                */
                //这里判断了当前发布的版本是不是‘快照’版本;
                //其中'libs-snapshot-local' : 'libs-release-local'是两个仓库名称
                repoKey = artifactVersion.endsWith('SNAPSHOT') ?
                            'libs-snapshot-local' : 'libs-release-local'
                username = "admin" // 发布者用户名
                password = "password" // 发布者密码
                maven = true
            }
            defaults {
                publishArtifacts = true
                //这里的'aar'对应publishing任务中的'aar',任务名称可自定义
                publications('aar')
                publishPom = true //Publish generated POM files to Artifactory (true by default)
                publishIvy = false //Publish generated Ivy descriptor files to Artifactory (true by default)
            }
        }
        resolve {
            repository {
                repoKey = 'jcenter'
                username = "admin" // 发布者用户名
                password = "password" // 发布者密码
            }
        }
    }
    
    • 然后在要发布的library工程中的build.gradle文件中的最后一行编写引入代码
    //local-maven.gradle 根据自己新建的文件路径与文件名为准,当前表示引入与当前文件同一目录下的 local-maven.gradle 文件
    apply from: 'local-maven.gradle'
    
    • 执行脚本代码

    命令行执行: gradlew assembleRelease artifactoryPublish
    或 在Android Studio中的Gradle projects依次执行assembleRelease与artifactoryPublish

    检查发布成功与否

    打开 http://localhost:8081/artifactory 登录管理后台,如图:

    此处输入图片的描述

    项目中引用

     repositories {
        //release仓库Uri    
        maven { url 'http://localhost:8081/artifactory/libs-release-local/' }
        //snapshot仓库Uri
        maven { url 'http://localhost:8081/artifactory/libs-snapshot-local' }
    }
    
    dependencies {
        compile 'com.jay:widget:1.0-SNAPSHOT'
    }
    

    科普下Module ID的组成

    什么?Module ID是什么玩意?“ com.android.support:appcompat-v7:23.3.0 ”,这个见过吧,就是这个东西,那么这个module id由哪些组成,就拿这个v7兼容包举例:

    groupId:    com.android.support
    artifactId: appcompat-v7
    version:    23.3.0
    
    引入成功

    完整local-maven.gradle文件见github地址:https://github.com/JaySong/JFrog-Artifactory

    相关文章

      网友评论

      本文标题:快速搭建本地代码仓库并实现Gradle脚本发布

      本文链接:https://www.haomeiwen.com/subject/fkwzlttx.html