美文网首页
Maven上传(二)

Maven上传(二)

作者: 春生_7291 | 来源:发表于2019-06-06 19:32 被阅读0次

    使用gradle发布aar到jcenter仓库

    一、前言

    目前Android Studio 新建工程时 ,在工程路径下的build.gradle 中 默认生成如下

    repositories {
            google()
            jcenter()
        }
    

    默认支持 jcenter,其他如maven 还要手动添加 例如

    repositories {
            maven{ url"https://maven.google.com"}
            mavenCentral()
            maven { url "https://jitpack.io" }
        }
    

    二 、准备工作

    1 注册bintray账号

    1 进入 https://bintray.com/ 注册账号 ,注册需要翻墙,
    注意不能使用 qq.com 结尾这样的邮箱,果然 调整汉子顺序不影响阅读,搞笑一下 我们继续撸。
    2 注册完成后,需要登录邮箱点击链接激活;当然也可以选择第三方登录,比如github 。

    2 获取api key

    登录后,选择 Edit Profile

    image.png
    或 打开https://bintray.com/profile/edit
    左边菜单的最下面有API Key选项,点击后:
    image.png
    输入密码点击 submit ,会显示Your API key,复制API key,gradle 配置中会用到。
    3 创建仓库

    点击 New Repository


    image.png

    name:仓库名称 可以随便取 ,复制name,gradle配置中需要
    type: 仓库类型 我们选择 Maven
    Licenses :许可证 ,不太了解,跟gradle配置中保持一致就行了。

    仓库创建好了 我们就可以上传jar了。

    三、配置gradle项目

    1 创建 Android Studio 项目,
    添加一个module 比如我的是 permission ,在permission中进行相关功能的处理

    2 配置gradle

    1 在工程目录下的gradle 中添加发布项目的插件.

      dependencies {
            classpath 'com.android.tools.build:gradle:3.3.0'
    
            //两个帮助发布项目的插件
            classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.1'
            classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    

    2 在 module 目录中添加 gradle.properties(如果没有的话)内容如下:


    image.png

    3 在 local.properties 中配置用户名和apikey(bintrary.com刚申请的)


    image.png
    4 在module 的gradle 中配置
    根节点添加 如下:
    // 上传插件
    apply plugin: 'com.github.dcendents.android-maven'
    apply plugin: 'com.jfrog.bintray'
    
    version = MAVEN_VERSION
    def siteUrl = 'https://github.com/xxx/xxxx'    // project homepage
    def gitUrl = 'https://github.com/xxx/xxxx.git' // project git
    group = MAVEN_GROUP_ID// Maven Group ID for the artifact
    // 根节点添加
    install {
        repositories.mavenInstaller {
            // This generates POM.xml with proper parameters
            pom {
                project {
                    //version MAVEN_VERSION
                    //groupId MAVEN_GROUP_ID
                    //artifactId MAVEN_ARTIFACT_ID
                    packaging MAVEN_PACKAGING
                    description MAVEN_DESCRIPTION
                    name MAVEN_NAME
                    url MAVEN_URL
                    inceptionYear MAVEN_INCEPTION_YEAR
    
                    scm {
                        tag "1.0"
                        url siteUrl
                        connection gitUrl
                        developerConnection gitUrl
                    }
                    licenses {
                        license {
                            name 'The Apache Software License, Version 2.0'//刚才创建仓库时的许可证
                            url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                            //distribution "repo"
                        }
                    }
                    developers {
                        developer {
                            id POM_DEVELOPER_ID
                            name POM_DEVELOPER_NAME
                            email POM_DEVELOPER_EMAIL
                        }
                    }
    
                }
            }
        }
    }
    
    //打包 sourcesjar
    task sourcesJar(type: Jar) {
        from android.sourceSets.main.java.srcDirs
        classifier = 'sources'
    }
    //打包 javadocjar
    task javadoc(type: Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }
    
    task javadocJar(type: Jar, dependsOn: javadoc) {
        classifier = 'javadoc'
        from javadoc.destinationDir
    }
    
    artifacts {
        archives javadocJar
        archives sourcesJar
    }
    
    Properties properties = new Properties()
    boolean isHasFile = false
    if (project.rootProject.file('local.properties') != null){
        isHasFile = true
        properties.load(project.rootProject.file('local.properties').newDataInputStream())
    }
    bintray {
        user = isHasFile ? properties.getProperty("bintray.user") : System.getenv("bintray.user")
        key = isHasFile ? properties.getProperty("bintray.apikey") : System.getenv("bintray.apikey")
        configurations = ['archives']
        pkg {
            repo = "maven"//仓库名称
            name = MAVEN_NAME//项目名称  project name in jcenter
            websiteUrl = siteUrl
            vcsUrl = gitUrl
            licenses = ["Apache-2.0"]
            publish = true
        }
    }
    
    

    备注 :
    1 repo :仓库名称 是在bintrary 创建的仓库名,能找到就行了
    2 gitUrl : 项目链接地址 不能为空地址。

    5 上传

    1 最方便的方式 选择如下


    image.png

    2 在Terminal中 输入命令行方式
    麻烦 就不写出来了。

    如果出现此种错误


    image.png

    在上传过程中执行了javadoc检查,所以可能会报上面的错误,解决方法就是避免进行javadoc的检查。
    1 注释

    artifacts {
        //archives javadocJar
        archives sourcesJar
    }
    

    2 在工程根目录下的 build.gradle下面添加如下配置:

    allprojects {
        repositories {
            google()
            jcenter()
        }
        tasks.withType(Javadoc) {
            options.addStringOption('Xdoclint:none', '-quiet')
            options.addStringOption('encoding', 'UTF-8')
        }
    }
    
    审核结果

    1 登录 https://bintray.com
    选择 Repository -> 上传的项目 --> 点击项目详情--->进入具体版本
    找到 Add To jcenter,点击进入后,写一些该库的描述 就可以提交了。
    注意 :右上角 包含一个Edit按钮,点击进入后,可以删除当前版本。
    2 审核等待两三个小时 就会有结果,
    通过或通不过都会有通知和邮件提示。

    image.png
    如上形式 说明审核通过了,就可以愉快的使用我们的jar了
    此外还可以根据你上传的groupId,访问该网站https://jcenter.bintray.com/你的groupId例如https://jcenter.bintray.com/com/github/zuochunsheng/如能引用,则可以看到如下:
    image.png
    依赖使用

    1 Maven Info 含有jar依赖方式


    image.png

    在需要的工程 gradle dependencies中 添加如下

    compile 'com.github.zuochunsheng:permission:0.3'
    

    就能使用这个 6.0权限申请的库了。

    简单介绍一下 ,如下 使用还挺简单,方便。

     //工具类 使用方式
            PermissionUtil.getInstance(this)
                    .requestRunTimePermission(new String[]{Manifest.permission.CALL_PHONE,
                                    Manifest.permission.WRITE_EXTERNAL_STORAGE},
                            new IPermission() {
                                @Override
                                public void onGranted() {
                                    Toast.makeText(MainActivity.this,"所有权限都同意了",Toast.LENGTH_SHORT).show();
                                }
    
                                @Override
                                public void onDenied(List<String> deniedPermission) {
                                    for (String permission :deniedPermission) {
                                        Toast.makeText(MainActivity.this,"被拒绝权限:"  + permission,Toast.LENGTH_SHORT).show();
                                    }
    
                                }
                            }
                    );
    

    需要注意一点 ,同一个版本的包只能上传一次 ,除非把该版本删除 ,
    需要更新 则需要增加版本号 ,上传成功后可以直接使用 不在需要 add to jcenter 等待审核,更新相当方便。由此 并不能保证更新版本的准确性,bintray更新就是, 只管上传成功 哪管是好是坏。

    参考
    使用Gradle发布aar项目到JCenter仓库

    相关文章

      网友评论

          本文标题:Maven上传(二)

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