文章主要介绍: (1)如何搭建本地的Jcenter仓库 (2)如何上传AAR、jar、Plugin到本地仓库 (3)如何引用本身上传的AAR、jar、Plugin (4)如何建立仓库的group,经过group能够将jcenter、maven、alibaba、google、以及本身建立的仓库等汇集一块儿,方便项目中引用。java
(1)下载artifactory工具:artifactory下载连接 (2)解压并运行artifactory.bat文件。出现下图的提示说明运行成功。 android
(1)进入Repositories点击local如图所示: 浏览器
准备工做:在项目的build.gradle下引入 org.jfrog.buildinfo:build-info-extractor-gradle:4.1.1,注意是项目的gradle不是app下面的。以下图所示: bash
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
def artifactVersion = '1.0.2001'//发布的版本
publishing {
publications {
mainJava(MavenPublication) {
groupId = 'XX.YYY' //填写GroupId
artifactId project.name
version = artifactVersion
from components.java
}
}
}
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
artifactory {
contextUrl = "http://localhost:8081/artifactory"//本地仓库地址
publish {
repository {
/**
repoKey:指定发布到的仓库名称
*/
//这里判断了当前发布的版本是否是‘快照’版本;
//其中'libs-snapshot-local' : 'lib-aar'是两个仓库名称
repoKey = artifactVersion.endsWith('SNAPSHOT') ?
libs-snapshot-local' : 'lib-aar' username = "admin" // 发布者用户名 password = "password" // 发布者密码 maven = true } defaults { publishArtifacts = true //这里的'mainJava'对应publishing任务中的'mainJava',任务名称可自定义 publications('mainJava') 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" // 发布者密码 } } } 复制代码
(4)在build.gradle里面引入local-maven.gradleapp
apply from: 'local-maven.gradle'
复制代码
(5)上传Jar 点击图中的artifactoryPublish上传Jar文件。若是提示缺乏POM文件,点击generatePomFileForMainJavaPublication,而后从新上传便可。 maven
步骤同上传jar,只是local-maven.gradle的代码有所区别。代码以下:工具
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
def artifactVersion = '1.0-SNAPSHOT'//发布的版本
publishing {
publications {
aar(MavenPublication) {
groupId = 'XXX.YYYY'
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' : 'lib-aar'是两个仓库名称
repoKey = artifactVersion.endsWith('SNAPSHOT') ?
'libs-snapshot-local' : 'lib-aar'
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" // 发布者密码
}
}
}
复制代码
同理,上传Plugin的步骤如上。点击下图的uploadArchives上传,上传AAR文件的代码有待优化。 gradle
buildscript {
repositories {
maven { url 'https://dl.google.com/dl/android/maven2/' }
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.5.4'
classpath "com.gradle.publish:plugin-publish-plugin:0.9.10"
}
}
apply plugin: "com.gradle.plugin-publish"
apply plugin: 'groovy'
apply plugin: 'maven'
archivesBaseName = DESCRIPTION
group = GROUP_ID
version = VERSION_NAME
repositories {
maven { url 'https://dl.google.com/dl/android/maven2/' }
jcenter()
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation gradleApi()
implementation localGroovy()
compile files('libs/jclasslib-library.jar')
implementation 'com.android.tools.build:gradle:3.0.1'
compile 'com.squareup:javapoet:1.8.0'
compile 'org.jooq:joor:0.9.6'
}
pluginBundle {
plugins {
FatLibraryPlugin {
id = XX.YYY.fat-aar' displayName = 'Fataar plugin' description = "The fat-aar plugin that can be used under android plugin 3.0.1 and gradle wrapper 4.4." tags = ['fat-aar', 'android'] version = VERSION_NAME } } } task sourcesJar(type: Jar) { classifier = 'sources' group BasePlugin.BUILD_GROUP description = 'Assembles a jar archive containing the main sources of this project.' from sourceSets.main.allSource } artifacts { archives sourcesJar } jar { manifest { attributes( "Manifest-Version": VERSION_NAME, "Main-Class": GROUP_ID) } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } uploadArchives { repositories { mavenDeployer { repository(url: "http://localhost:8081/artifactory/lib-aar/") { authentication(userName: "admin", password: "password") } } } } 复制代码
上传成功之后,进入浏览器,查看是否有你上传的文件,若是以下图所示说明上传成功: 优化
(1)建立virtual,步骤和建立lib-aar基本相似,须要将你须要的第三方仓库加入到里面,我添加有jcenter、maven、alibaba、google和本身上面建立的lib-aar。以下图所示: ui
(2)下面就是如何引用了,在项目的build.gradle引入下面的代码,图中打马赛克的地方是你建立的virtual的名字。
compile 'XXX.YYY:1.0.2001'
复制代码
XXX.YYY: 对应上传AAR的groupId 。Utils: 对应项目的名字,版本号1.0.2001对应上传jar的artifactVersion
compile 'XXX.YYY:1.0.2001'
复制代码
classpath "gradle.plugin.me.lucas:fat-aar-plugin:1.0.9"
复制代码