-
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查看全部 -
<!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>
查看全部 -
本节概要如下
一、根据上节对项目的要求,对多项目进行配置优化
要求一:所有模块都应用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;也可以选择直接在单个项目下执行任务
查看全部 -
groovy高效特性
可选的类型定义-> 不用定义类型,自动(弱类型)
def version = 1
assert语句 [断言:此处应为error]
assert version == 2
括号可选
println(version)
println version
字符串
def s1 = 'fsdfsd'
def s2 = "fafad" [可以插入变量${xxxx},直接解析]
def s3= '''afafadf
asfsdfsdffsdfsdfsdfsdfdf''' [换行]
集合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()
闭包[代码块,多种使用形式]
//常见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.
➜ ~
```
查看全部 -
本节概要如下
一、项目模块化
项目高内聚低耦合时,可以轻松地进行模块化。模块也就是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任务
查看全部 -
本节概要如下
一、概述
描述:基于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、初始化:Gradle根据构建脚本创建一个项目,并且在这个构建脚本中隐式可用。在多项目中,会把需要参与构建的项目(应该是指当前仙姑依赖的那些项目)也进行初始化
2、配置:根据配置代码(可以粗暴理解为,除了动作代码之外的所有代码)生成task的依赖顺序和执行顺序
3、执行:执行动作代码(动作代码里不能修改和定义任务的依赖,所以doFirst里不能放dependsOn),执行完后构建就结束了
gradle的灵活性:提供了钩子方法(Hook),在每个阶段之间都有对应的钩子方法。一般很少用到,知道它们的存在就可以了
查看全部 -
本节概要如下
自定义任务:定义一个自动创建项目目录结构的任务
使用到的知识:任务的定义和执行、dependsOn、doFirst、doLast、闭包的使用、数组的遍历
查看全部 -
一、概述
构建脚本的要素:项目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:之前讲过,构建是可重复的,如果多次构建中,某些任务的输入输出等等没发生过变化,再去执行效果不变,就会跳过执行
查看全部
举报