创建 Gradle 项目

👆 联网状态打开 IDEA
项目结构介绍

src/main/java 正式代码目录
src/main/resources 正式配置文件目录

src/test/java 放置单元测试代码目录
src/test/resources 放置单元测试配置文件目录
src/main/webapp 还有一个可放置的 web 目录(页面信息)
src/build.gradle 文件

plugins{}
指运行环境
repositories{}
mavenContral() 为中央仓库,在没有指定情况的下会直接从中央仓库下载 jar 包。
dependenciese{}
gradle工程所有的jar包的坐标都在dependencies属性内放置。
同时每个jar包的坐标都有三个基本元素构成,group,name,version 组成
group:多分为多段,第一段为 域,第二段公司名称。其中 org 为非盈利组织,con 为商业组织。例如:tomat:为 apache项目 groupid为org.apache。
name:项目的全名称。
version:版本号。
testCompile:测试时所依赖的jar包,在dradle可由 implementation 代替。

创建项目有提到 👆
项目/build.gradle 文件
buildscript{} 属性
gradle执行所需要的依赖,分别对应maven库和插件
通过 mevenCentral 引入 jar 包
使用 compile 添加 jar 包
用来解析所需要的依赖在classpath中可用,并且将它们打包。


依赖完成

在 用户的 user/用户名/.gradle/caches/modules-2/files-2.1 下有我们加载的 jar 包
demo 引入一个spring包 并测试使用
在 mavenRepository 中引入jar 包

// https://mvnrepository.com/artifact/org.springframework/spring-context
compile group: 'org.springframework', name: 'spring-context', version: '5.2.8.RELEASE'
引入后的依赖包位置查看

开始测试
创建 接口 ”AccountDao“
位置 ”com.gradlelearn.dao“
public interface AccountDao {
public List findAll();
}
作为接口,查询方法
创建 ”AccountDaoImpl“
位置 ”com.gradlelearn.dao.impl“
public class AccountDaoImpl implements AccountDao {
@Override
public List findAll() {
System.out.println("test");
return null;
}
}
实现查询功能
测试方法
创建 ”AccountTest“
位置 test 文件下 ”com.gradle.test“
ClassPathXmlApplicationContext 类型
获得当前 bean 容器
创建对象 ApplicationContext 类型
applicationContext.getBean 方法
从容器中获得当前 Dao
public class AccountTest {
@Test
public void acccountTest() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
AccountDao bean = applicationContext.getBean(AccountDao.class);
bean.findAll();
}
}
测试结果

打包 jar 包

jar 包的位置

创建 web 工程 demo
补充
扩展属性
使用 ext 扩展块可以一次添加多个属性。
声明多个属性。添加了键值对的属性集合。
ext.versions = [
minSdk:21,targetSdk:29
]
apply plugin
此方式用来引入 Gradle 官方插件库。

apply from
引用本地资源

android
这个闭包主要为了配置项目结构的各种属性。
compileSdkVersion
设置编译时用的Android版本

defaultConfig 闭包
默认闭包
applicationId
项目的包名
minSdkVersion
最低兼容版本
targetSdkVersion
目标兼容版本
versionCode
项目版本号
versionName
版本名称
testInstrumentationRunner
用来进行 AndroidJUnitRunner 进行单元测试

buildTypes 闭包
生成安装文件的主要配置,多数为两个子闭包, 一个debug闭包,用于指定生成测试版安装文件的配置,可忽略。一个release闭包,用于指定生成正式版的配置。两者配置参数大多一致,区别为默认属性配置不一样。
minifyEnabled
是否对代码进行混淆
proguardFiles
指定混淆的规则文件

dependencies闭包
定义了项目的依赖关系,三种依赖方式:本地依赖,库依赖,和远程依赖。
自AndroidStudio3.0后 compile 引入库不再使用,而通过api和implementation,api完全等同于先前的 compile
,通过 api 引入 整个项目是可以使用当前的依赖库的。implementation 引入的库只有对应的 Module 使用。
在使用 compile时导致模块之间的耦合过高,不利于项目的拆解,通过 implementation做到降低耦合提高安全性。
Module:指项目中创建的不同Module。
implementation
远程依赖

testImplementation 和 androidTestImplementation
测试用依赖库


groovy 快速使用

打开 idea 的 groovy 编辑器
基础语法
groovy hellow word!
println("hello world!");
groovy 更类似于 java 语言。

groovy 可以省略末尾 “;”号
println("hello world!")

groovy 可以 省略括号
println "hello world!"

定义变量
def x = 15
println x
def 修饰符是 弱类型 声明,groovy会自动根据情况来给变量赋予对应的类型。

定义集合
def x = ['x', 'f', 'c']
x << 'y'
println x
定义集合:通过 “[]” 中括号声明
集合添加数据,”<<” 双小于号即可

提取元素
x.get(2)

提取元素下标为 2 的元素
定义map
声明map
def m = ['key1': 'value1']
在初始化时必须要有初始化的值,用来对弱类型进行修改。
添加键值对
m.key2 = "value2"
打印键值对
println m.get('key2')
println m

groovy 中的闭包
什么是闭包?
groovy中的一个代码块。用于在gradle中把闭包当作参数使用。
定义闭包和携带参数的闭包
def b = {
println "hello world!"
}
def b = {
v-> println "hello world! $v"
}
花括号 “{}” 即为闭包的样式。
v 表示一个变量,通过 “$v” 引用变量。
闭包作为方法的参数,为闭包添加参数
def method(Closure closure) {
closure()
}
def method(Closure closure) {
closure("arguments")
}
Closure:为闭包的类型,位于 “groovy.lang” 包下。
字符“arguments”作为参数传递给了闭包,在使用时将对应闭包添加到方法中即可。
使用闭包
method (b)
method 为自己创建的方法。
