使用gradle


创建 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 进行单元测试

detailtConfig闭包

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 为自己创建的方法。


文章作者: TheCara
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 TheCara !
  目录