Android Gradle介绍

1、Gradle简介

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。

面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。

2、Gradle环境搭建

2.1、Gradle下载

https://services.gradle.org/distributions/

注意:Idea2018支持4版本,更高版本不支持

在这里插入图片描述

以上二选一

解压

2.2、环境变量配置

GRADLE_HOME 
D:\gradle-4.9-bin\gradle-4.9
path环境变量添加
%GRADLE_HOME%\bin

输入gradle -v测试

gradle -v

在这里插入图片描述

2.3、idea中Gradle配置

注意:配置过gradle环境变量后idea能够自动识别gradle,所以可以不用在idea专门配置

如果想单独配置,如下图

在这里插入图片描述

2.4、Idea使用Gradle创建java项目

File–New–Project如图,如果需要创建web项目,则可以勾选web选项

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

建成的目录结构如图

在这里插入图片描述

完整的目录结构应该为

在这里插入图片描述

解决方式如下

在build.gradle中添加如下代码

task "create-dirs" << {
    sourceSets*.java.srcDirs*.each {
        it.mkdirs()
    }
    sourceSets*.resources.srcDirs*.each{
        it.mkdirs()
    }
}

完整的代码为

group 'xkp.lesson'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

task "create-dirs" << {
    sourceSets*.java.srcDirs*.each {
        it.mkdirs()
    }
    sourceSets*.resources.srcDirs*.each{
        it.mkdirs()
    }
}


在右侧gradle中

在这里插入图片描述

在create-dirs上右键run create-dirs即可

3、build.gradle示例

完整的build.gradle代码如下

//组织名称 类似包名
group 'xkp.lesson'
//版本号
version '1.0-SNAPSHOT'
//插件都有表示它们自己的一个短名称。. 在上述例子中,我们使用短名称 java 去应用 JavaPlugin。
apply plugin: 'java'
//注释
/*注释*/
//当编译Java源代码时所使用的Java版本兼容性。
sourceCompatibility = 1.8

//仓库设置
repositories {
    
    mavenCentral()
}

//依赖配置
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

task "create-dirs" << {
    sourceSets*.java.srcDirs*.each {
        it.mkdirs()
    }
    sourceSets*.resources.srcDirs*.each{
        it.mkdirs()
    }
}


4、Gradle 插件

4.1、Java 插件

Java 插件向一个项目添加了 Java 编译、 测试和 bundling 的能力。它是很多其他 Gradle 插件的基础服务。

用法

要使用 Java 插件,请在构建脚本中加入:

使用 Java 插件

build.gradle

apply plugin: 'java'  

4.2、War 插件

War 的插件继承自 Java 插件并添加了对组装 web 应用程序的 WAR 文件的支持。它禁用了 Java 插件生成默认的 JAR archive,并添加了一个默认的 WAR archive 任务。

用法

要使用 War 的插件,请在构建脚本中包含以下语句:

使用 War 插件

build.gradle

apply plugin: 'java'
apply plugin: 'war'  

5、仓库设置

5.1 配置示例

repositories {
    //从本地查找
    mavenLocal()
    //从阿里云下载
    maven{url "https://maven.aliyun.com/nexus/content/groups/public/" }
    //从中央仓库查找
    mavenCentral()
}

5.2 本地加载

mavenLocal()

从本地仓库查找,默认位置为C:/Users/Administrator/.gradle (可以不写,默认先从本地找)

在这里插入图片描述

在这里插入图片描述

5.3 配置阿里云仓库

maven{url “https://maven.aliyun.com/nexus/content/groups/public/” }

​ 配置阿里云镜像,可以加快jar包依赖的下载

5.4 从maven中心仓库加载

mavenCentral():从maven中央仓库加载

以上三个依次匹配,匹配成功后面的不再匹配

5.5 设置与maven仓库一致

创建系统变量

GRADLE_USER_HOME

在这里插入图片描述

测试

6、依赖配置

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
}

工程的依赖。Gradle 需要你告诉它工程的依赖是什么,它们在哪,然后帮你加入构建中。依赖可能需要去远程库下载,比如 Maven 或者 Ivy 库。也可以是本地库,甚至可能是另一个工程。我们称这个过程叫依赖解决

各种依赖方式说明

implementation

这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。该方式不会产生依赖传递,避免了依赖冲突问题,是目前推荐的做法。

api

完全等同于compile指令。

compile

这种是我们最常用的方式,使用该方式依赖的库将会参与编译和打包。

compile 'org.springframework:spring-webmvc:4.3.9.RELEASE'

testCompile

testCompile 只在单元测试代码的编译有效

testCompile group: 'junit', name: 'junit', version: '4.12'

providedCompile

只在编译时有效,不会参与打包。比如servlet-api可以使用该方式

providedCompile group: 'javax.servlet.jsp.jstl', name: 'jstl', version: '1.2'

runtime

如果你的jar包/依赖代码 仅在运行的时候需要,但是在编译时不需要依赖,就用runtime

runtime group: 'mysql', name: 'mysql-connector-java', version: '5.1.42'

7、多模块项目创建

7.1 创建父工程

File----New—Project

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7.2 创建子模块entity、dao、service、controller

点击父工程右键—New—Model

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

按照上述流程依次创建dao、service、controller

注意:创建controller时应该勾选web模块

在这里插入图片描述

删除父工程中的src目录,完整结构如图

在这里插入图片描述

父工程的settings.gradle如下

rootProject.name = 'parent'
include 'entity'
include 'dao'
include 'service'
include 'controller'

7.2 父工程管理公共配置与依赖

在父工程的build.gradle中添加allprojects把公共配置放入其中

allprojects {
    group 'xkp.lesson'
    version '1.0-SNAPSHOT'

    apply plugin: 'java'

    sourceCompatibility = 1.8

    repositories {
        //从本地查找
        mavenLocal()
        //从阿里云下载
        maven{url "https://maven.aliyun.com/nexus/content/groups/public/" }
        //从中央仓库查找
        mavenCentral()
    }

    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
}

清除子模块中的重复项,entity、dao、service删除完毕,controller中只保留

apply plugin: 'war'

7.3 dao模块依赖entity模块

在dao模块的build.gradle中添加

dependencies{
    compile project(':entity')
}

测试:在entity中创建UserInfo,测试在dao模块中是否可用,可用依赖成功。

img

  • assemble: 编译
  • build:编译并执行测试
  • clean:删除build目录
  • jar: 生成jar包
  • test:执行单元测试

war 生成war包

Maven转Gradle
gradle init --type pom

Gradle依赖排除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JTZ001

你的鼓励是我创作的最大动力?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值