gradle学习笔记(下)

构建脚本
group 分组 name 名字 version版本 用来确定依赖的坐标
build.gradle 中常用方法 apply[所需插件]、dependencies[所需依赖]、repositories[指定依赖仓库],task[自定义任务]
属性的配置方式 ext、 或者建立gradle.properties文件来声明属性

    taskdependsOn 声明任务依赖于上一个任务动作[会先执行所依赖的任务]
    一个任务包含多个任务动作
    doFirst[任务动作列表前添加动作]、doLast<<[任务动作列表后添加动作]  一个任务可以包含多个doFirst和doLast  

    自定义任务名称 存在于other 中。

构建生命周期: 初始化(初始化有哪些项目会添加到初始化中)->配置(确定执行动作顺序)->执行(执行动作代码)
也有提供初始化执行后执行定义代码 也有配置后执行自定义代码 …… 具体查看官方文档

依赖管理 :
工件坐标 :项目名 、模块名、版本号
常用仓库:mavenLocal(自己本地仓库)/mavenCentral/jcenter (公网的公共仓库,可以下载jar也可以自己上传jar)
自定义maven仓库 构建自己的私服
文件仓库:本地机器的路径也可以作为仓库
下载jar包顺序是按照配置文件中声明的仓库顺序来查找,如果查找到了 即下载 不继续往下查找

    依赖传递性: A依赖B B依赖C  则A就依赖C

    依赖阶段: compile  runtime 编译依赖的运行时都会依赖 运行时依赖的编译时不一定依赖 运行时依赖扩于编译时依赖
                比如jdbc的驱动类是属于运行时依赖,因为我们源码有它的接口,只需要运行的时候调用具体实现类即可
                当然如果无法区分编译依赖和运行依赖,统一使用编译依赖 也没错。
              testCompile testRuntime 测试时依赖的源码不一定依赖,但是源码依赖的测试一定依赖


    版本冲突: gradle 默认以当前冲突中最高版本来解决版本冲突 ,所以一般不需要我们来关注
        //修改版本冲突默认策略 , 这样就能发现出现版本冲突了
            configurations.all{
                resolutionStrategy{
                    failOnVersionConflict()
                }
            }

            冲突解决方式1;排除低版本依赖
                 //排除传递性依赖
                compile('org.hibernate:hibernate-core:3.6.3.Final'){
                    exclude(group:'org.slf4j',model:'slf4j-api')
                }
            冲突解决方式2: 强制指定各个冲突jar依赖的某个版本  (在修改版本冲突策略中加入force方法)
                        configurations.all{
                            resolutionStrategy{
                                failOnVersionConflict()

                                //指定该依赖统一都使用这个版本
                                force 'org.slf4j:slf4j-api:1.7.22'
                            }
                        }

                                        }
            默认解决方式: 使用冲突中最高版本jar

多模块构建
settings.gradle 文件只能表示该父项目包含哪些模块
模块间的依赖:
dependencies {
//该模块依赖了modle模块(具有传递性依赖)
compile project (‘:modle’)
compile ‘org.codehaus.groovy:groovy-all:2.3.11’
testCompile group: ‘junit’, name: ‘junit’, version: ‘4.12’
}

根项目中的build.gradle文件中

    allprojects{
        //指定所有子项目依赖的插件
        apply plugin: 'java'
        sourceCompatibility=1.8
        apply plugin: 'groovy'
    }
    //为所有子模块配置
    subprojects{
        //指定仓库
        repositories {
            //调用project的空参数方法
    //        maven{
    //
    //            url:'私服地址'
    //        }
            mavenLocal()
            mavenCentral()
        }
        //配置公共依赖
        dependencies {
            compile 'org.codehaus.groovy:groovy-all:2.3.11'
            compile 'ch.qos.logback:logback-classic:1.2.1'
            testCompile group: 'junit', name: 'junit', version: '4.12'
        }

    }

web子模块build.gradle 文件中
        dependencies {
        //依赖service模块
        compile project(':Service')
    }





    统一配置管理 在根项目下建立gradle.properties文件  可以定义子模块的版本信息 

    #定义子模块中的统一属性
        group = 'demo'
        version = '1.0-SNAPSHOT'

    然后可以删除子模块中的group和version定义

    根目录的一些任务

    比如clean 它会执行整个子模块所有的clean任务  而子模块的clean任务只会执行和它相互关联的clean任务

自动化测试
建立garadle契约式目录
会在构建的时候自动执行测试方法 通过则继续构建 失败就报错

发布项目:

在根目录添加以下配置 gradle命令的根项目中会出现publish类型的一系列命令 可以执行发布工作

//发布到远程仓库的插件
apply plugin: 'maven-publish'
publishing {
    //myPublish 是自己可以定义的
    publications {
        mavenJava(MavenPublication) {
            //将那个模块或者项目 输出发布到远程仓库
            groupId 'demo'
            artifactId 'demo'
            version '1.0-SNAPSHOT'
            from components.java
        }
    }
    //指定发布的仓库
    repositories{
        mavenLocal()
    }

    //指定发布的仓库 可以指定多个, 每个将会在gradle命令中多一个发布到不同库的命令
//        repositories{
//            maven{
//                //远程名字
//                name 'myRepo'
//                //远程地址
//                url ''
//            }
//        }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值