H__D  

 一、Gradle简介

  Gradle是源于Apache Ant和Apache Maven概念的项目自动化构建开源工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置面向Java应用为主。当前其支持的语言暂时有Java、Groovy、Kotlin和Scala。

  Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

  IDEA 2017.3以上版本支持。

二、安装

  本例安装的Gradle是5.6.4版本

1、下载

  官方网站:https://gradle.org/install/#manually

  提供了两种下载方式,Binary-only是只下载二进制源码,Complete, with docs and sources是下载源码和文档。如果有阅读文档的需求可以下载第二个,没有需要的下载Binary-only即可。

2、安装

  解压安装包到想安装到的目录。

3、配置

1)配置环境变量

  GRADLE_HOME 环境变量

  变量名:GRADLE_HOME

  变量值:解压到的目录

export GRADLE_HOME=/Users/h__d/Applications/gradle-5.6.4
export PATH=$PATH:$GRADLE_HOME/bin

  GRADLE_USER_HOME 仓库目录

  变量名:GRADLE_USER_HOME

  变量值:自定义Gradle仓库目录或者Maven的仓库目录

export GRADLE_USER_HOME=/Users/h__d/.m2/repository

2)配置Gradle仓库源

  在Gradle安装目录下的 init.d 文件夹下,新建一个 init.gradle 文件,里面填写以下配置。

allprojects {
    repositories {
        maven { url 'file:///C:/Java/maven_repository'}
        mavenLocal()
        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
        maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
        mavenCentral()
    }

    buildscript { 
        repositories { 
            maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
            maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
            maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
        }
    }
}

  repositories 中写的是获取 jar 包的顺序。先是本地的 Maven 仓库路径;接着的 mavenLocal() 是获取 Maven 本地仓库的路径,应该是和第一条一样,但是不冲突;第三条和第四条是从国内和国外的网络上仓库获取;最后的 mavenCentral() 是从Apache提供的中央仓库获取 jar 包。

三、新建Gradle项目

1、新建一个空文件夹test-gradle

2、进入test-gradle目录,使用命令初始化项目

  命令:gradle init 

MacBook-Pro-22907:test-gradle h__d$ gradle init

Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Swift
Enter selection (default: Java) [1..5] 3

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Select test framework:
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1

Project name (default: test-gradle):      
Source package (default: test.gradle): 

> Task :init
Get more help with your project: https://docs.gradle.org/5.6.4/userguide/tutorial_java_projects.html

BUILD SUCCESSFUL in 32s
2 actionable tasks: 2 executed

3、初始化后的项目结构

├── build.gradle   // 用于配置当前项目的Gradle构建脚本
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar      // gradlew 的可执行JAR包
│       └── gradle-wrapper.properties  // gradlew 的配置属性
├── src           // 源码目录
├── gradlew      // 基于 unix 的系统的 Gradlew 脚本
├── gradlew.bat    // 基于 windows 的系统的 Gradlew 脚本
└── settings.gradle  // 用于配置 Gradle 构建的 Gradle 设置脚本

 

 4、build.gradle文件说明
// gradle 构建文件
//
group 'com.test.gradle'
// 版本
version '1.0-SNAPSHOT'

// 支持 插件
apply plugin: 'java'

// 源码编译版本
sourceCompatility = 1.8

/**
 * 仓库配置
 */
repositories {

    // 配置先从本地仓库寻找jar包,优先寻找上一个配置,找到不执行下面的配置
    // 本地仓库位于USER_HOME/.m2/repository
    mavenLocal()
    // aliyun镜像
    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/'}
    // Maven的中央仓库
    mavenCentral()
}

/**
 * 依赖
 * 每一个jar包的坐标都有三个基本元素组成
 * group、name、version
 * testCompile 表示该jar包在测试的时候起作用,该属性为jar包的作用域
 * 在gradle里面添加坐标的时候都要带上jar包的作用域
 */
dependencies {
    // spring 依赖
    implementation group: 'org.springframework', name: 'spring-context', version: '5.2.4.RELEASE'

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

5、运行项目,可以运行App.java文件

1 public class App {
2     public String getGreeting() {
3         return "Hello world.";
4     }
5 
6     public static void main(String[] args) {
7         System.out.println(new App().getGreeting());
8     }
9 }

 

 

 

其他

  联系groovy文件 

// groovy控制台

// 介绍groovy编程语言
println("hello world");

// groovy中如何定义变量
// groovy变量是弱类型
def i = 18;
println(i);

def s = "xiaoming"
println s;

// 定义一个集合
def list = ['a', 'b']
list << 'c'
println list.get(2)

// 定义一个map
def map = ['key1':'value1', 'key2':'value2']
map.key3 = 'value33';
println map.get('key3');

// groovy中的闭包
// 闭包就是一个段代码块,在gradle中,主要是把闭包当参数来使用
def b1 = {
println "hello b1"
}

// 定义一个方法,方法里面需要闭包类型的参数
// Closure 闭包类型
def method1(Closure closure) {
// 运行闭包
closure()
}

// 调用方法
method1(b1)

// 定义带参数的闭包
def b2 = {
v ->
println "hello ${v}"
}
def method2(Closure closure) {
closure("小黑")
}
method2(b2)
groovy.md

 

 

参考:

1、https://www.cnblogs.com/NyanKoSenSei/p/11458953.html

2、https://zhuanlan.zhihu.com/p/159589727

3、https://www.jianshu.com/p/8c8e848ca1a2

 

posted on 2021-05-13 01:12  H__D  阅读(266)  评论(0编辑  收藏  举报