gradle基础

原创 2017年06月20日 01:28:02

安装

1、确保已经安装jdk,用java -version判断一下
2、从Gradle官网下载并进行解压
- 配置环境变量,GRADLE_HOME
- 添加到path,%GRADLE_HOME%\bin;
- 验证是否安装成功,gradle -v
官网下载Binary-only和Complete (with docs and sources)都可以。

gradle工程目录结构

与maven的工程目录结构一样
这里写图片描述

构建脚本概要

Gradle构建中的两个基本概念是项目(project)和任务(task),每个构建至少包含一个项目,项目中包含一个或多个任务。在多项目构建中,一个项目可以依赖于其他项目;类似的,任务可以形成一个依赖关系图来确保它们的执行顺序。
这里写图片描述
project1依赖于project2,project1中taskA依赖于taskB和taskC,所以taskB和taskC执行完后才执行taskA。

项目(project)

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

三个重要的属性–group、name、version– 对应maven中的坐标(groupId、artifactId、version),注(build.gradle中有group和version,而name在settings.gradle中)
重要的方法–apply、dependencies、repositories、task
属性的其他配置方式:ext、gradle.properties

任务

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

重要方法
- dependsOn –任务依赖
- doFirst、doLast – task也是一个动作列表,doFirst在任务动作列表之前添加一个动作、doLast在任务动作列表之后添加一个动作。一个任务里可以执行多次doFirst和doLast
一般使用插件(jar或war等等)提供的任务,如果满足不了需求可以自定一任务。

自定义一个task生成工程目录

//创建java工程代码目录
def createDir = {
    path ->
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdirs();
        }
}

//声明一个task
task makeJavaDir(){
    def paths = ['src/main/java','src/main/resources','src/test/java','src/test/resources',];
    doFirst{
        paths.forEach(createDir);
    }
}

然后点击gradle中的刷新,就会在other中出现定义的任务
这里写图片描述
点击可以生成jar包,我们可以运行有main方法的jar包,例

java -classpath build/libs/tododemo-1.0-SNAPSHOT.jar com.kedou.gradle.tododemo.App

再编写一个任务依赖,这里创建一个web工程的目录

task makeWebDir(){
    dependsOn 'makeJavaDir'
    def paths = ['src/main/webapp','src/test/webapp'];
    doLast {
        paths.forEach(createDir);
    }
}

doFirst和doLast是生命周期执行阶段的执行代码,上例中其他就是配置阶段的代码

gradle 任务与插件

Android知识要点整理(21)—-Gradle 之创建任务和插件

构建生命周期

Gradle生命周期

依赖管理

常用仓库 mavenLocal/mavenCentral/jcenter,还有自定义maven仓库(也就是maven私服)。

依赖阶段配置

  • compile、runtime –源代码
  • testCompile、testRuntime – 测试代码
    这里写图片描述
    runtime依赖于compile,所以compile依赖的东西runtime也会依赖
    testCompile依赖与compile,所以compile依赖的东西testCompile也会依赖。

解决版本冲突

  • 查看依赖报告
  • 排除传递性依赖
  • 强制一个版本
  • gradle默认解决策略,自动帮我们依赖最高版本的jar包

修改默认解决策略,从而发现版本冲突

//修改默认解决策略,使其当有依赖冲突构建失败
configurations.all {
    resolutionStrategy{
        failOnVersionConflict()
    }
}

加上如上配置,执行build,结果:

Error:A conflict was found between the following modules:
 - org.slf4j:slf4j-api:1.6.1
 - org.slf4j:slf4j-api:1.7.22
 - org.slf4j:slf4j-api:1.5.8

去掉上面的依赖冲突构建失败配置,点击task的help中的dependencies查看依赖树
这里写图片描述

点击后结果如下:

compile - Dependencies for source set 'main' (deprecated, use 'implementation ' instead).
+--- org.hibernate:hibernate-core:3.6.3.Final
|    +--- antlr:antlr:2.7.6
|    +--- commons-collections:commons-collections:3.1
|    +--- dom4j:dom4j:1.6.1
|    +--- org.hibernate:hibernate-commons-annotations:3.2.0.Final
|    |    \--- org.slf4j:slf4j-api:1.5.8 -> 1.7.22
|    +--- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.0.Final
|    +--- javax.transaction:jta:1.1
|    \--- org.slf4j:slf4j-api:1.6.1 -> 1.7.22
\--- ch.qos.logback:logback-classic:1.2.1
     +--- ch.qos.logback:logback-core:1.2.1
     \--- org.slf4j:slf4j-api:1.7.22

而使用默认策略的结果就是使用最新的
这里写图片描述

排除传递性依赖

样例:

compile ("org.springframework.boot:spring-boot-starter-aop:${springBootVersion}") {
  exclude group: 'org.slf4j', module: 'slf4j-api'
  exclude group: 'ch.qos.logback', module: 'logback-classic'
}

参考解决Gradle传递性依赖冲突

强制指定一个版本

//修改默认解决策略,使其当有依赖冲突构建失败
configurations.all {
    resolutionStrategy{
        failOnVersionConflict()
        force 'org.slf4j:slf4j-api:1.7.22'
    }
}

ext与gradle.properties的使用

关于Gradle配置的小结

全局配置

根(root)下的build.gradle中共同的东西配置在allprojects和subprojects中

gradle测试

这里写图片描述
常用的是这样被发现,其他测试框架则按照提供的文档来

发布

使用Gradle发布项目到JCenter仓库

源码

学习源码

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

gradle基础使用教程

  • 2016-04-28 11:44
  • 550KB
  • 下载

Gradle混淆_打包Jar包基础DEMO

  • 2016-06-23 10:35
  • 42.65MB
  • 下载

Gradle构建脚本基础

Gradle构建脚本,内部是基于 Groovy 的 DSL(领域特点语言),而Maven是基于XML的,Groovy相比XML更加简洁、灵活和强大。 Groovy 因为给 Java 开发人员提供了最大...

gradle基础

  • 2017-06-20 01:30
  • 38KB
  • 下载

Android Studio系列教程四--Gradle基础

Android Studio系列教程四–Gradle基础Android Studio系列教程四–Gradle基础 2014 年 12 月 18 日 devtools 本文为个人原创,欢迎转载,但请...

史上最详细的Android Studio系列教程四--Gradle基础

其实很早之前也写了一篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了很多,所以暂且结合Stduio 1.0正式版与最新的Gradle语法来详细讲解下,小伙伴们直接跟我一步步来学习吧...

【二】Gradle 基础知识学习笔记

一、Groovy 语法 1. 定义变量及函数: 2. 列表及遍历 3. 类定义(跟java类似) 4. 闭包设置代理对象 二、 Gradle Tasks 1. 定义Task 2. Task之间依赖关系...

Gradle笔记——依赖管理基础

1. 什么是依赖管理 依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件;二是发布,即构建完成后上传到某个地方。 1.1 依赖 大部分的项目都需要第三方库类或项目文件,这些文件就...

Android Studio 中 Gradle 基础

本文转载自:http://blog.csdn.net/catoop/article/details/50433182什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向J...

Android Studio--Gradle基础

什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)