Gradle

作者: 宋song一 | 来源:发表于2018-09-01 23:14 被阅读1次

    gradle配置gradle-wrapper.properties

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    

    distributionUrl=file:///G:/Software/gradle-4.8-all.zip (使用本地下载的zip包,避免重复下载)

    (distributionUrl=https://services.gradle.org/distributions/gradle-3.1-bin.zip.默认配置,启动时下载)

    zipStoreBase和zipStorePath组合在一起,是下载的gradle的zip所存放的位置。
    zipStorePath是zipStoreBase指定的目录下的子目录。

    distributionBase和distributionPath组合在一起,是解压gradle的zip之后的文件的存放位置。
    distributionPath是distributionBase指定的目录下的子目录。

    下载位置可以和解压位置不一样。
    zipStoreBase和distributionBase有两种取值:GRADLE_USER_HOME和PROJECT。

    其中,GRADLE_USER_HOME表示用户目录。
    在windows下是%USERPROFILE%/.gradle,例如C:\Users<user_name>.gradle\。
    在linux下是$HOME/.gradle,例如~/.gradle。

    PROJECT表示工程的当前目录,即gradlew所在的目录


    •project和task 是Gradle本身领域主要的两个对象
    •Project为task提供了执行的容器和上下文

    project

       gradle构建的时候,会根据build.gradle构建脚本文件生成project对象.
       所有的构建都是执行project里面的方法进行构建
       project对象可以隐式调用
       脚本里面写的代码就是插入到project对象里面
    

    task

           task任务:编译,打包.定义的任务最终也会打包到project里面执行
    

    task生命周期

    扫描,执行
    默认为扫描式
    task任务依赖dependsOn("任务名").依赖关系成立后,执行打开任务也将执行全部代码

     task("打开"){
     println("opendoor")
     }
      task("put"){
      println("放东西")
     }.dependsOn("打开")
        task("close"){
        println("关闭")
          }.dependsOn("put")
    

    task任务下用doFirst修饰(可以实现按依赖顺序执行).doLast

    task("打开"){
        doFirst{
            println("opendoor")
        }
    
    }
    task("put"){
        doFirst {
            println("放东西")
        }
    
    }.dependsOn("打开")
    task("close"){
        doFirst{
            println("关闭")
        }
    
    }.dependsOn("put")
    

    任务集tasks

    可以将多个任务task放入tasks

    idea配置文件

      build.gradle文件
    

    1. 1plugins:插件,插件已经定义了很多任务集

             java                         //无需打包时使用
            application                //需要打包时使用,可以打包为tar/zip包
            war                           //javaEE使用,可以打包为war包
            kotlin("jvm")             //支持开发kotlin
    

    1.2三方插件/插件仓库使用

         Gradle-->Explore-->Gradle Plugins
    

    2.依赖管理

       在什么地方以什么形式引入外部代码(导包)
    

    所有软件在最开始时都不会很大,随着时间的推移,软件平台不断膨胀,各个组件或模块之间的依赖变的越来越复杂.如果管理不当就会陷入泥潭
    三方框架(插件集)http://mvnrepository.com
    gradle自动依赖管理

    依赖库的坐标

    Group(组):用包名来命名,表示由哪一个组织开发
    Name(名):项目名
    Version(版本号):定义jar包的版本

    依赖配置阶段

    TDD(test driven development) 测试驱动开发
    编译时依赖 compile
    测试时依赖 testcompile

    3.代码仓库repositories

        存放代码的地方
             mavenCentral
            Jcenter        安卓谷歌应用
           Local本地仓库(mavenCentral, Jcenter)   首次使用会从默认中央仓库下载,再次使用就缓存到电脑了
          文件仓库(不建议使用)                //协作阻碍
         自定义maven仓库(最常用 maven私服)
    

    Gradle增量更新

    效率提升的要点所在.任务没有变化的时候,重新执行瞬间完成.
    输入
    inputs.dir() 文件夹
    inputs.file() 文件
    输出
    outputs.dir()
    outputs.file()
    下面代码实现统计工作量

    task("统计工作量") {
    
        inputs.dir("G:\\javaExc")           //输入源
        outputs.file("info.txt")                //输出源
        doFirst {
            val dir = fileTree("G:\\javaExc")
            val file = file("info.txt")                    //存放源代码文件名
    
    //      file.writeText("")//每次执行覆盖
            dir.forEach {
                if (it.isFile) {
                    file.appendText(it.absolutePath)
                    file.appendText("\r\n")
    
                }
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Gradle

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