构建本地Jcenter、上传AAR、jar、plugin到本地Jcenter

1 篇文章 0 订阅
0 篇文章 0 订阅

#如何构建本地Jcenter、以及上传AAR、jar、plugin到本地Jcenter

文章主要介绍:
(1)如何搭建本地的Jcenter仓库
(2)如何上传AAR、jar、Plugin到本地仓库
(3)如何引用自己上传的AAR、jar、Plugin
(4)如何创建仓库的group,通过group可以将jcenter、maven、alibaba、google、以及自己创建的仓库等聚集一起,方便项目中引用。

如何搭建本地Jcenter仓库

(1)下载artifactory工具:artifactory下载链接
(2)解压并运行artifactory.bat文件。出现下图的提示说明运行成功。
artifactory启动成功
(3)在浏览器中输入http://localhost:8081/artifactory/出现下图,那么恭喜你artifactory已经部署成功了。默认账号 : admin 密码:password
浏览器显示效果

如何创建本地仓库

(1)进入Repositories点击local如图所示:
创建仓库
(2)点击右上角的加号。
(3)在弹出Select Package Type中选择Maven这个选项。
(4)填写Repository Key选项,这个输入的文字,就是你本地的仓库名称了。我创建的仓库名称是:lib-aar。以后上传jar、aar会用到这个名称。
填写仓库名称
(5)完成以上步骤,说明你的本地仓库已经创建完毕

如何上传Jar

准备工作:在项目的build.gradle下引入 org.jfrog.buildinfo:build-info-extractor-gradle:4.1.1,注意是项目的gradle不是app下面的。如下图所示:
这里写图片描述
(1)创建一个java-library项目,假设Module的名字叫做:utilslib
(2)在与build.gradle同级的目录下新建local-maven.gradle。
(3)local-maven.gradle里面的代码如下:

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.gradle

apply from: 'local-maven.gradle'

(5)上传Jar
点击图中的artifactoryPublish上传Jar文件。如果提示缺少POM文件,点击generatePomFileForMainJavaPublication,然后重新上传即可。
上传jar

如何上传AAR

步骤同上传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

同理,上传Plugin的步骤如上。点击下图的uploadArchives上传,上传AAR文件的代码有待优化
这里写图片描述

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")
            }
        }
    }
}

上传成功以后,进入浏览器,查看是否有你上传的文件,如果如下图所示说明上传成功:
这里写图片描述

如何创建仓库的group,通过group可以将jcenter、maven、alibaba、google、以及自己创建的仓库等放在一起,方便项目中引用

(1)创建virtual,步骤和创建lib-aar基本类似,需要将你需要的第三方仓库加入到里面,我添加有jcenter、maven、alibaba、google和自己上面创建的lib-aar。如下图所示:
这里写图片描述

这里写图片描述

(2)下面就是如何引用了,在项目的build.gradle引入下面的代码,图中打马赛克的地方是你创建的virtual的名字。
这里写图片描述
(3)接下来就是引入自己上面上传的jar、AAR和Plugin文件了。

  1. 引用Jar
    XXX.YYY: 对应上传jar的groupId 。Utils: 对应项目的名字,版本号1.0.2001对应上传jar的artifactVersion
 compile 'XXX.YYY:1.0.2001'
  1. 引用AAR

XXX.YYY: 对应上传AAR的groupId 。Utils: 对应项目的名字,版本号1.0.2001对应上传jar的artifactVersion

 compile 'XXX.YYY:1.0.2001'
  1. 引用Plugin
classpath "gradle.plugin.me.lucas:fat-aar-plugin:1.0.9"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值