快速搭建本地代码仓库并实现Gradle脚本发布
2016-04-21 本文已影响2431人
QiuJay
做为一名有经验的安卓开发人员,相信大家都知道Maven仓库与Jcenter仓库,这是目前全球最常用的两个,其中Jcenter是目前最大的一个Java与Android开源软件构建仓库,而且我们经常用的Android Studio就是默认支持Jcenter
材料
- JFrog提供免费并开源的Artifactory环境包,点击下载,官网:https://www.jfrog.com
- 系统环境:Linux
步骤
-
解压下载下来的zip压缩包,目录结构如下[version | 4.7.4]:
dir-list - 保证系统环境当前已经配置了Java环境,并版本1.8或以上
- Linux直接命令行启动“artifactory.sh”
-
Linux下当启动成功后,命令行会出现如下提示:
linux-started - 测试访问:http://localhost:8081/artifactory,账号:admin;密码:password
home - 至此就成功了!简单吧,基本没有任何技术问题
实现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