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

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

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

材料

  • JFrog提供免费并开源的Artifactory环境包,点击下载,官网:https://www.jfrog.com
  • 系统环境:Linux

步骤

  1. 解压下载下来的zip压缩包,目录结构如下[version | 4.7.4]:
    快速搭建本地代码仓库并实现Gradle脚本发布_第1张图片
  2. 保证系统环境当前已经配置了Java环境,并版本1.8或以上
  3. Linux直接命令行启动“artifactory.sh”
  4. Linux下当启动成功后,命令行会出现如下提示:
    快速搭建本地代码仓库并实现Gradle脚本发布_第2张图片
  5. 测试访问:http://localhost:8081/artifactory,账号:admin;密码:password
    快速搭建本地代码仓库并实现Gradle脚本发布_第3张图片
  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 登录管理后台,如图:
快速搭建本地代码仓库并实现Gradle脚本发布_第4张图片

项目中引用

 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

快速搭建本地代码仓库并实现Gradle脚本发布_第5张图片

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

你可能感兴趣的:(maven,android,gradle,脚本,Jcenter)