Gradle升级篇

1.构建脚本:

Gradle构建中的两个基本概念是项目(project)和任务(task),每个构建至少包含一个项目,项目中包含一个或多个任务。在多项目构建中,一个项目可以依赖于其他项目;类似的,任务可以形成一个依赖关系图来确保他们的执行顺序。

1.1项目(project):

一个项目代表一个正在构建的组件(比如一个jar文件),当构建启动后,Gradle会基于build.gradle实例化一个org.gradle.api.Project类,并且能够通过project变量使其隐式可用。

    1.1.1project常用属性:

    group、name、version(这三个属性就是一个组件的坐标,可以唯一确定一个组件)

    1.1.2project常用方法:

    apply(应用于插件)、dependencies(声明项目依赖于哪些Jar包或者项目)、repositories(表示寻找依赖的仓库)、task(声明有哪些任务)

    属性的其他配置方式:ext、gradle.properties

1.2任务(task):

任务对应org.gradle.api.Task。主要包括任务动作和任务依赖。任务动作定义了一个最小的工作单元。可以定义依赖于其他任务、动作序列和执行条件。

    1.2.1任务(task)里的方法:

    dependsOn(用于声明任务依赖)

    doFirst,doLast <<(分别是在动作列表的前面和后面添加动作)

    很多时候不需要我们自定义任务,一般的插件都自带任务,如下:插件jar在执行自带的任务jar时还依赖了其他三个任务

    同样也可以通过自定义任务来实现插件无法完成工作,例如可以通过自定义任务来创建目录结构:

2.构建声明周期:

构建主要分为三个阶段:

2.1初始化阶段:

gradle会根据构建脚本创造一个项目,也就是一个project类,在多项目构建中,他会初始化所有将要参与到构建中的项目

2.2配置阶段:

生成task的依赖顺序以及执行顺序,这是根据配置代码(除了动作代码之外的代码)来生成的

配置代码举例:

task loadVersion{
    project.version = '1.0'
}

2.3执行阶段:

执行动作代码,执行完之后,一个构建也就完成了

动作代码举例:

task loadVersion <<{
    print 'success'
}

整个过程如下:

3.依赖管理:

几乎所有的基于JVM的软件项目都需要依赖外部类库来重用现有的功能。自动化的依赖管理可以明确依赖的版本,可以解决因传递性依赖带来的版本冲突。

常用仓库:mavenLocal/mavenCentral/jcenter、自定义maven仓库(私服)、文件仓库(本地机器的文件路径)

3.1自动化依赖管理:

3.2依赖阶段配置:

源代码阶段(compile编译阶段、runtime运行时阶段),测试阶段(testCompile编译阶段、testRuntime运行时阶段)

3.3依赖阶段关系:

运行时阶段都是扩展自编译阶段的,也就是编译阶段依赖的jar包在运行时也都会依赖,反之不一定依赖;如果是源代码依赖的,测试代码都会依赖,反之也不一定会依赖

3.4解决依赖版本冲突:

步骤:1.查看依赖报告、2.排除传递性依赖、3.强制一个版本(gradle会默认依赖最高版本)

修改默认解决策略:

configurations.all{
    resolutionStrategy{
        failOnVersionConflict()
    }
}

排除传递性依赖:

compile('org.hibernate:hibernate-core:3.6.3.Final){
    //排除单个最低版本的依赖
    exclude group:"org.slf4j",module:"slf4j-api"
    //或者使用下面的方法排除所有的传递性依赖
    //transitive = false
}

强制指定一个版本:

configurations.all{
    resolutionStrategy{
        force 'org.slf4j:slf4j-api:1.7.24'
    }
}

4.多项目构建:

项目模块化:

对原先项目中的业务、web和持久化进行区分,将不同层次的代码封装到不同的module中,然后进行相互的依赖。这一做法的好处就在于根项目可以统一的管理不同的子项目,思维逻辑也更加清楚。

5.发布:

首先是导入插件:

apply plugin: 'maven-publish'

插件下面配置两个属性:

publishing{
    publications{
        myPublish(MavenPublication){
            from components.java
        }
    }
    repositories{
        maven{
            name "仓库名称"
            url "私服地址或者别的发布地址"
        }
    }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值