四时宝库

程序员的知识宝库

项目自动化构建开源工具Gradle(开源项目github)

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

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

1. 安装

1.1. 下载

官网:https://gradle.org/

下载地址:https://gradle.org/releases/

下载:binary-only版本

1.2. 配置环境变量

GRADLE_HOME=C:\java\gradle-7.4
PATH增加%GRADLE_HOME%\bin

验证:

gradle -v

2. 介绍[idea中使用]

idea中使用gradle无需提前配置安装gradle。创建项目的时候,可以选择gradle插件的位置,多种方式:本地配置的gradle或者wrapper方式等。注意gradle的home目录,用于设置本地仓库地址。

gradle项目目录结构:

src
  main #正式代码
    java #java源码
    resources #配置文件
    webapp #页面元素,例如:js,css,jpg,html,jsp等。
  test #测试代码
    java #java源码
    resources #配置文件

3. Groovy的语法简单介绍

Idea中使用groovy编辑器:Tools | groovy console打开。

groovy介绍

//groovy介绍
println("你好");
//groovy可以省略末尾分号,也可以省略括号
println "hello"

定义变量,def为弱类型

//定义变量,def为弱类型
def i = 10
println i

集合

//集合
def list = ['a', 'b']
list << 'c' //添加元素
println list.get(2)//取第三个元素

Map定义

//Map定义
def map = ['name': 'zhangsan', 'age': 18]
map.birth = '2012'//添加
println map.get('birth')//获取

闭包:其实就是一段代码块。gradle中主要把闭包当参数使用。

//闭包:其实就是一段代码块。gradle中主要把闭包当参数使用。
//定义闭包
def b1 = {
    println 'hello b1'
}
//定义一个方法,接收闭包类型参数
def funb1(Closure closure) {
    closure()
}
//调用方法,执行闭包
funb1 b1
//定义带参数闭包
def b2 = {
    v -> println "hello b2-${v}"
}

def funb2(Closure closure) {
    closure("nomax")
}

funb2 b2

4. gradle文件配置介绍

gradle user home目录:gradle的用户家目录,所有的初始化,缓存,依赖包等放置该目录中。

配置文件:File | Settings | Build, Execution, Deployment | Build Tools | Gradle

配置gradle的仓库使用maven的仓库:

  1. 先选择maven本地仓库地址,例如:C:\java\apache-maven-3.6.3\repository
  2. 在环境变量中配置:GRADLE_USER_HOME值为maven本地仓库地址。
/**
 * 插件配置
 */
plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

/**
 * 仓库的配置:jar包检索顺序按照先后进行,如果不存在,则向下找。
 * mavenLocal:标识从本地仓库寻找jar包,配置GRADLE_USER_HOME环境变量。
 * mavenCentral:标识使用的是中央仓库,此时项目中的使用jar包会从中央仓库下载到本地指定目录[gradle user home]。
 */
repositories {
    mavenLocal()
    mavenCentral()
}

/**
 * gradle工程的依赖管理
 * 依赖jar部分:group,name,version三部分
 * testCompile:代表jar包在测试环境中起作用,标识jar的作用域。
 */
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation 'cn.hutool:hutool-http:5.7.22'
}

gradle命令:

Tasks-build:构建相关的命令。

jar:打jar包,jar包构建目录:build-libs

dependencies引入jar的作用域介绍:

  • implementation: 对于使用了该部分的编译有效,当前项目有效,其他项目如依赖当前项目,其他项目访问使用时无效,即对当前有效,对外部无效。
  • api: 相比implementation,该方式不进行隔离。
  • compile(已经被废弃):日常编译和打包时有效。
  • testCompile: 单元测试代码和打包测试时有效。
  • debugCompile: debug模式编译和debug打包时有效。
  • releaseCompile: release模式编译和打包时有效。

根据具体官方文档查阅其作用。

5. gradle创建web工程

目录(增加的文件目录):

src/main/webapp/WEB-INF/web.xml文件

build.gradle

/**
 * 插件配置
 */
plugins {
    id 'java'
    id 'war' //打war包
}

6. gradle多模块工程

父工程:new - project

settings.gradle

通过include包含了子模块的工程。

build.gradle

allprojects {}子模块工程则可以共用。

插件方式必须使用:apply plugin: "java"

子模块:new - module

build.gradle

模块自用内容进行配置,共用内容无需配置。

引用其他模块:dependencies中使用:complie project(":模块名称")

插件方式必须使用:apply plugin: "war"

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接