使用ArtiFactory

作者: 技术客栈 | 来源:发表于2018-05-30 10:58 被阅读986次

    由于公司项目需要,现需要将一些公用的工具、组件、封装至Maven 仓库,以提供于其他项目的使用,避免复制粘贴的出现。众人拾柴火焰高。这样经过大家共同的努力,从而是该工具库变得更加的完善和健壮。为此使用ArtiFactory,当然也可以使用 Bintray。亦是公司需要,使用ArtiFactory。
    现做出记录:

    注意:

    因为该工具的使用,需要使用Java JDK 1.8 以上,所以,在使用之前我们先检查下自己的JDK版本。 使用 java version 命令在控制台输出
    自己JDK所在的开发环境的版本。
    

    配置ArtiFactory环境

    1、下载ArtiFactory ,下载地址:https://bintray.com/。下载完成之后解压进入bin 目录找到artifactory.bat文件点击直接运行,启动本地服务。测试是否成功的配置好来了artifactory 环境使用 :http://localhost:8081/artifactory,看是否能够打开 Artifactory 界面。当我们创建Artifactory 的使用默认是为们提供了账号和密码,然后即可登陆。

    username = "admin"
    password = "password"

    2、然后 New Local Repository,选择 Gradle 项目类型。并填写Repository Key该仓库的Key 你可以认为是一个分支。

    项目中的使用

    在我们项目的根 buil.gradle 文件中添加

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.2'
            classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
        
        }
    }
    

    在我们Module 文件的build.gradle 文件中配置

    apply plugin: 'com.jfrog.artifactory'
    apply plugin: 'maven-publish'
    

    配置POM 文件

    • 定义常量
    def MAVEN_LOCAL_PATH ='http://localhost:8081/artifactory'
    
    def ARTIFACT_ID = 'utils'    //Utils common
    
    def VERSION_NAME = '1.0.2'   //version Code
    
    def GROUP_ID = 'com.andorid'        //packname
    
    • 开始配置

        def MAVEN_LOCAL_PATH ='http://localhost:8081/artifactory'
        def ARTIFACT_ID = 'utils'
        def VERSION_NAME = '1.0.2'
        def GROUP_ID = 'com.andorid'
        publishing {
            publications {
                aar(MavenPublication) {
                    groupId GROUP_ID
                    version = VERSION_NAME
                    artifactId ARTIFACT_ID
                    // Tell maven to prepare the generated "*.aar" file for publishing
                    artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
                    pom.withXml {
                        def dependencies = asNode().appendNode('dependencies')
                        configurations.compile.allDependencies.each{
                            // 如果有compile fileTree(),group会为空,需要去除
                            if(it.group != null) {
                                def dependency = dependencies.appendNode('dependency')
                                dependency.appendNode('groupId', it.group)
                                dependency.appendNode('artifactId', it.name)
                                dependency.appendNode('version', it.version)
                            }
                        }
                    }
                }
            }
        }
      

    配置Artifactory 上传

        artifactory {
            contextUrl = MAVEN_LOCAL_PATH
            publish {
                repository {
                    repoKey = 'demo-test-key'
                    username = "admin"
                    password = "password"
                }
                defaults {
                    publications('aar')
                    publishArtifacts = true
                    properties = ['qa.level': 'basic', 'dev.team': 'core']
                    publishPom = true
                }
            }
        }
    

    **repoKey **该变量值为 在Artifactory 平台配置的仓库分支,也就是我们最终的代码将会在该目录下生成。

    测试上传

    • 执行三步

      点击打开Module 项目的buildGradle 分别为以下三个步骤

      • build-->assembleRelease 生成Release 包
      • publishing-->generatePomFileForAarPublication 生成POM 文件
      • artifactoryPublish 上传aar 文件

    然后我们即可在Artifactory 平台观测到我们刚才上传的aar 包文件。

    使用方式##

    在项目的根build.gradle 目录中添加如下代码

    allprojects {
        repositories {
            jcenter()
            maven { url "http://localhost:8081/artifactory/demo-test-key/" }
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    这里需要说明的是demo-test-key 为我们repoKey 也就是仓库的分支。

    项目的build.gradle 文件的配置

    dependencies {
        ;;;;;;;;;;;;
        // 依赖配置
        compile 'com.andorid:utils:1.0.2'
    }
    

    这里同样需要主要的是我们的依赖配置的定义规则如下

    规则

     group_id : com.andorid
     artifact_id : utils
     version_name: 1.0.2
    

    项目Gradle 依赖配置

    group_id:artifact_Id:version_name  对比  'com.andorid:utils:1.0.2'
    

    相关文章

      网友评论

        本文标题:使用ArtiFactory

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