gradle-依赖及外部命令执行api

依赖相关api:

/**

* 依赖配置api

*/

buildscript {ScriptHandler scriptHandler->

//配置我们工程的仓库地址,闭包的参数一般都省去,闭包中的this,owner,delegate中的方法都是可以直接调用

    scriptHandler.repositories { RepositoryHandler repositoryHandler->

        repositoryHandler.google()

        repositoryHandler.jcenter()

        repositoryHandler.mavenLocal()

        repositoryHandler.mavenCentral()

        repositoryHandler.ivy{}

        repositoryHandler.maven {//私有maven仓库,可以配置多个

            MavenArtifactRepository mavenArtifactRepository->

                //一般是公司内部的maven地址

                mavenArtifactRepository.name 'hexindai'

                 mavenArtifactRepository.url 'http://localhost:8081:/nexus/repositories'

                  mavenArtifactRepository.credentials{

                        username='amdin'

                        password='andim124'

            }

    }

}

//buildscript中的dependencies方法是配置我们工程的"插件"依赖,是gradle本身框架对第三方库的依赖

    scriptHandler.dependencies {

        //应用下面的之后,就能指定工程为Android工程或Android lib

        classpath'com.android.tools.build:gradle:3.0.0'

        // NOTE: Do not place your application dependencies here; they belong

        // in the individual module build.gradle files

    }

}

//app中project中的dependencies是配置网站或者app需要引用第三方库.(为应用程序添加依赖)

//应用程序的依赖一般有:

//依赖本地库

implementation fileTree(include: ['*.jar'], dir: 'libs')//fileTree,file ,files

//依赖远程库1 ,使用compile引入的第三方库,不仅会在编译阶段使用,并且会打包到apk包中

compile 'com.jakewharton:butterknife:8.4.0'(jar包,var包,arr包(包含资源的jar包Android独有))

//依赖远程库2 ,使用provided引入的第三方库,只会在编译阶段使用,不会打包到apk包中

provided 'com.jakewharton:butterknife:8.4.0'

//依赖第三方有源码的工程

compile project(':baidumobstat-react-native')

//依赖冲突:第三方库中引入了相同的库

compile 'io.reactivex.rxjava2:rxjava:2.0.7'{

exclude module :'support-v4'//通过module方式排除依赖

exclude group:'com.android.support'//排除同一个组下的多个库冲突

}

//传递依赖.比如 compile 'com.squareup.retrofit2:retrofit:2.1.0',retrofit中引入的

//第三方库,我们项目中也要使用,就可以使用传递依赖,将传递依赖设为true

compile 'io.reactivex.rxjava2:rxjava:2.0.7'{

exclude module :'support-v4'//通过module方式排除依赖

exclude group:'com.android.support'//排除同一个组下的多个库冲突

    transitive false //false默认禁止传递依赖,尽量不允许使用传递依赖,因为不确定性.万一依赖的工程升级了,不依赖工程c了.}

//引入方式:compile和provided

/*

compile 第三方依赖里面的类和资源都会被打入到工程中.

provided(占位编译) 编译的时候回引入第三方的类和资源,打包时不会打入项目中.运行时不处理会报错.

比如:场景1:Tinker库,他的作用编译时生成application类,只要生成了application类,运行时是不需要的.

场景2:当前工程是类库工程的话,如果类库中引入的okhttp,我们项目中也使用了okhttp,那么类库中就可以使用provided

*/

//外部命令执行,拷贝apk到外部文件夹中.执行./gradlew build //命令生成apk 后,执行./gradlew apkcopy

//首先自定义一个task

task(name: 'apkcopy'){

    //doLast都会在gradle的执行阶段执行

    doLast{    

        def sourcePath=this.buildDir.path+'/outputs/apk'

        def desationPath='/Users/lichao/Downloads/'

        def command="mv -f ${sourcePath ${desationPath}}"

        //exec执行外部命令

        exec{

            try{            

                executable'bash'args'-c',command        

            }catch(Exceptione){            

                println('the command is execute failed.')       

             }    

        }

    }

}

你可能感兴趣的:(gradle-依赖及外部命令执行api)