为了账号安全,请及时绑定邮箱和手机立即绑定

新一代构建工具gradle

skyding JAVA开发工程师
难度中级
时长 1小时58分
学习人数
综合评分9.63
93人评价 查看评价
9.7 内容实用
9.5 简洁易懂
9.7 逻辑清晰
  • idea是可以为gradle项目自动生成目录的,老师在前面设置没有选择 create directories for empty content root automatically
    查看全部
  • 前提:构建脚本中默认都是有一个project实例的; 1.apply是project中的一个方法(根据groovy语言特性,括号可以省略) 2.version是project中的一个属性变量 3.repositories是一个方法,mavenCentral()是一个闭包,整体是一个调用闭包的方法 4.同三
    查看全部
  • 根据课程,自己手写了一份代码,大家可以拿去参考
    https://gitee.com/StarsSky/todo

    查看全部
    3 采集 收起 来源:6课程总结

    2020-03-09

  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>todo</title>
        <script type="text/javascript">
            function addTodo(){
                var name = document.getElementById("name").value;
                var list = document.getElementById("list");
                list.innerHTML = list.innerHTML + "<p>" + name + "</p>";
            }
        </script>
    </head>
    <body >
    <h1>TODO-web版</h1>
    <label>请输入代办事项名称:</label><input id="name" type="text"/>
    <button onclick="addTodo()">添加</button>
    <h3>代办事项列表:</h3>
    <div id="list"></div>
    </body>
    </html>


    查看全部
    3 采集 收起 来源:TODO-WEB版

    2019-04-09

  • groovy高效特性

    1. 可选的类型定义-> 不用定义类型,自动(弱类型)

      def version = 1

    2. assert语句 [断言:此处应为error]

      assert version == 2

    3. 括号可选

      println(version)

      println version

    4. 字符串

      def s1 = 'fsdfsd'

      def s2 = "fafad"   [可以插入变量${xxxx},直接解析]

      def s3= '''afafadf

      asfsdfsdffsdfsdfsdfsdfdf''' [换行]

    5. 集合API

      //定义一个list,默认为array list

      def buildTools=["ant","maver"]

      //追加

      buildTools << 'dfsdfd'

      //验证

      assert buildTools.getClass() == ArrayList

      assert buildTools.size() == 3

      //定义一个map[一定要单引号吗]

      def buildYears = ['ant':2000, maven:2004]

      //追加元素

      buildYears.gradle = 2009

      //访问元素【两种形式】

      println buildYears.ant

      //字符串形式[一定要单引号吗]

      println buildYears['gradle']

      //打印类型[LinkedHashMap]

      println buildYears.getClass()

    6. 闭包[代码块,多种使用形式]

      //常见gradle闭包形式,当做方法参数

      //箭头后面是 方法体

      def c1 = {

      v -> 

           print v

      }

      def c2 = {

             print 'hello'

      }

      //两个使用闭包作为参数的方法

      //不要导入java相关自动补全包

      def method1(Closure closure){

          closure('param')

      }


      //不带参数的闭包

      def methon2(Closure closure){

             closure()

      }

      //多了个分号????

      method1(c1);

      method2(c2);



    查看全部
  • 命令行 java -classpath build/libs/todo-1.0-SHAPSHOT.jar com.imooc.gradle.todo.App
    查看全部
  • groovy与java比较 1.分号可选 2.会自动添加get,set方法 3.private属性可直接用.获取 4.最后一个表达式的值作为返回值,即return可以省略 注意: == 在Java里不会有异常, 但是用equal()可能会有,比如null.equal().
    查看全部
  • https://gradle.org

    ```sh

    ➜  ~ java --version

    java 11.0.2 2019-01-15 LTS

    Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)

    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

    ➜  ~ java -version 

    java version "11.0.2" 2019-01-15 LTS

    Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)

    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

    ➜  ~ java -V      

    Unrecognized option: -V

    Error: Could not create the Java Virtual Machine.

    Error: A fatal exception has occurred. Program will exit.

    ➜  ~ java -v

    Unrecognized option: -v

    Error: Could not create the Java Virtual Machine.

    Error: A fatal exception has occurred. Program will exit.

    ➜  ~ 

    ```

    查看全部
    1 采集 收起 来源:gradle安装

    2020-09-17

  • 本节概要如下

    一、根据上节对项目的要求,对多项目进行配置优化

    要求一:所有模块都应用Java插件

    所有项目默认都应用Java插件,但是最好统一配置在根目录下。配置方式:在根项目的build.gradle使用allprojects方法

    allprojects{
      apply plugin:'java'
      sourceCompatibility = 1.8
    }

    要求二:web子项目打包成war包

    只给web模块的build.gradle配置:apply plugin:'war'

    要求三:所有项目添加Logback日志功能

    根项目没有代码,所以使用allprojects或者subprojects配置效果一样,这里就采用subprojects来试

    tips:allprojects和subprojects的闭包里,都完全可以看作一个单独的build.gradle来写代码

    要求四:统一配置group和version(之前提过ext和gradle.properties方式)

    这里采用gradle.properties,在根目录创建gradle.properties,配置group和version即可

    二、总结

    总结一:子项目的build.gradle里只是配置项目自己的个性化的配置,共性的全都在根项目里一起配置了

    总结二:根项目执行task,会同步执行所有子项目对应的task;也可以选择直接在单个项目下执行任务

    查看全部
  • 本节概要如下

    一、项目模块化

    项目高内聚低耦合时,可以轻松地进行模块化。模块也就是module

    二、实战前的知识铺垫

    配置要求:1、所有项目添加logback日志功能;2、统一配置公共属性(group、version等)

    项目范围:1、子项目包括刚刚划分的三个项目(model、repository、web),对应方法为subprojects;2、所有项目相比于子项目,多了一个根项目,所有项目对应方法为allprojects(子项目和所有项目,感觉都是从根项目的视角来看的)

    三、多项目相关说明

    模块间如何相互依赖?在dependencies里增加编译阶段依赖:

    compile project(":model")

    只有根项目有settings.gradle,里面除了原先的rootProject.name之外,还有三个include,对应三个子项目。settings.gradle就是用于多项目构建的,只是用来管理当前项目有哪些子项目

    查看全部
  • 本文概要如下

    一、解决依赖冲突的步骤:

    1、查看依赖报告

    2、通过排除传递性依赖解决冲突

    3、或者强制指定一个版本来解决冲突

    二、gradle的冲突解决策略

    一般不需要手动处理依赖冲突,gradle默认会依赖发生冲突的较高版本的jar包

    如何修改gradle的默认冲突解决策略(下例设定为发生冲突就失败):

    configuration.all{
      resolutionStrategy{
        failOnVersionConflict()
      }
    }

    三、冲突解决方式

    冲突解决方式1:排除传递性依赖

    在某个依赖下exclude排除某些jar包

    冲突解决方式2:强制指定一个版本

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


    tips:IDEA下查看依赖树的方法:执行help下的dependencies任务

    查看全部
    1 采集 收起 来源:解决版本冲突

    2020-02-23

  • 本节概要如下

    一、概述

    描述:基于JVM的项目都需要依赖外部类库提供的功能。自动化的依赖管理可以明确依赖的版本,解决因传递性依赖带来的版本冲突

    工件坐标(GAV):group、artifactId、version三者,可以唯一确定一个jar包

    常用仓库:公共仓库对应方法mavenCentral和jcenter,本地仓库对应方法mavenLoacal,实际开发中最常用的就是自定义maven仓库(maven私服),还有不推荐的文件仓库

    依赖的传递性:C依赖B,B依赖A,则C依赖A

    自动化依赖管理的场景(参考截图理解):构建工具提供依赖管理功能,从远程仓库拉取jar包到本地仓库,给依赖配置(构建脚本比如build.gradle)使用

    二、依赖管理的几个阶段

    源代码两个阶段:compile编译阶段、runtime运行时阶段

    测试代码的两个阶段:testCompile、testRuntime

    各阶段的关系:编译阶段依赖的,运行时都会依赖;源代码阶段依赖的,测试代码阶段都会依赖。反之不成立

    取舍:编译阶段不需要的依赖,可以放到运行时来依赖,比如jdbc的接口和实现类,后者在运行时依赖即可。粗暴的办法是,都设置为编译阶段依赖


    查看全部
    1 采集 收起 来源:依赖管理

    2020-02-23

  • 本节主题:构建的生命周期

    构建共有三个阶段:

    1、初始化:Gradle根据构建脚本创建一个项目,并且在这个构建脚本中隐式可用。在多项目中,会把需要参与构建的项目(应该是指当前仙姑依赖的那些项目)也进行初始化

    2、配置:根据配置代码(可以粗暴理解为,除了动作代码之外的所有代码)生成task的依赖顺序和执行顺序

    3、执行:执行动作代码(动作代码里不能修改和定义任务的依赖,所以doFirst里不能放dependsOn),执行完后构建就结束了

    gradle的灵活性:提供了钩子方法(Hook),在每个阶段之间都有对应的钩子方法。一般很少用到,知道它们的存在就可以了

    查看全部
    1 采集 收起 来源:构建生命周期

    2020-02-23

  • 本节概要如下

    自定义任务:定义一个自动创建项目目录结构的任务

    使用到的知识:任务的定义和执行、dependsOn、doFirst、doLast、闭包的使用、数组的遍历

    查看全部
    1 采集 收起 来源:自定义任务

    2020-02-23

  • 一、概述

    构建脚本的要素:项目project和任务task

    一个build.gradle至少包含一个项目,一个项目里有若干个任务

    多项目互相可以依赖,项目内的任务也可以互相依赖,所以有一个确定的执行顺序

    二、项目

    概念:Gradle根据build.gradle实例化一个Project类,这个实例就是所谓的项目

    三个重要的变量(用来唯一标识):group、name(跟artifactId好像是一个意思)、version

    重要方法:apply、dependencies(所依赖的jar包)、repositories(要找的jar包所在的仓库)、task

    属性的其他配置方式:project的ext属性、gradle.properties文件中定义

    三、任务task

    概念:对应org.gradle.api.Task类,主要要素:任务动作(最小工作单元)、任务依赖(所依赖的东西)

    方法1:dependsOn,用来声明任务依赖

    方法2:doFirst以及doLast,task是动作列表,俩方法表示在动作列表的最前/后添加动作,可多次添加

    其他说明:gradle及插件(apply加载的那个插件)定义了很多默认的任务,一般情况下都是够用的,不够用就需要自定义任务

    tips:之前讲过,构建是可重复的,如果多次构建中,某些任务的输入输出等等没发生过变化,再去执行效果不变,就会跳过执行

    查看全部
    1 采集 收起 来源:构建脚本介绍

    2020-02-23

首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
1、 编程零基础可听 2、 写过一段时间代码再听更好 3、 有与他人协作开发意向者最佳
老师告诉你能学到什么?
了解gradle的脚本语法、配置要素、依赖管理等基本原理,掌握使用gradle命令行或者集成IDE之后,进行构建、单元测试、打成jar包或者war包并发布到maven仓库等单项目或者多项目的自动化过程。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!