gradle工具的学习

  • 文档参考
  • 一、gradle的安装:
  • 1.1、下载
  • 1.2、配置环境变量
  • 二、使用Idea来创建gradle项目
  • 2.1、创建gradle的war工程
  • 2.2、项目文件目录详解
  • 2.2.1、gradle目录
  • 2.2.1.1、gradle目录下gradle-wrapper.jar文件
  • 2.2.1.2、gradle目录下gradle-wrapper.properties文件
  • 2.2.2、build.gradle
  • 2.2.3、settings.gradle
  • 三、gradle的打包:
  • 3.1、先在之前创建的gradle项目中创建类
  • 3.2、打包项目的两种方式
  • 3.3、运行打好的jar文件
  • 3.4、打包时添加主类信息


文档参考

  

一、gradle的安装:

1.1、下载

  下载页面
    https://gradle.org/releases/     选择合适版本进行下载(保证本地的jdk版本为1.8及其以上)

1.2、配置环境变量

  配置过程略

    注意:如果想要gradle默认使用Maven仓库的保存位置,请在环境变量中配置 GRADLE_USER_HOME 变量,值为 maven仓库的位置,例如:

使用gradle后java文件 gradle init.gradle_maven

二、使用Idea来创建gradle项目

  1、File => New Project ==>然后选择左侧栏的Gradle

    注意:如果没有选择SDK的请先选择,且jdk版本必须为1.8及其以上

使用gradle后java文件 gradle init.gradle_使用gradle后java文件_02


  2、填写存储的位置和相关的坐标信息,然后选择Finish

使用gradle后java文件 gradle init.gradle_使用gradle后java文件_03


  3、项目创建完成后,配置Gradle    通过配置:File ==》 Setting ==》Gradle 来配置gradle信息

使用gradle后java文件 gradle init.gradle_maven_04


  4、项目生成后的文件目录:

|---- 项目目录
|   |---- .gradle目录(存放gradle执行信息)
|   |---- gradle目录
|      |---- wrapper目录
|         |---- gradle-wrapper.jar文件
|         |---- gradle-wrapper.properties文件
|   |---- src目录
|      |---- main目录
|         |---- java目录
|         |---- resouces目录
|      |---- test目录
|         |---- java目录
|         |---- resouces目录
|   |---- build.gradle文件
|   |---- gradlew文件(Unix gradle环境的构建执行脚本)
|   |---- gradlew.bat文件(Win gradle环境的构建执行脚本)
|   |---- settings.gradle文件

2.1、创建gradle的war工程

  操作和创建jar工程相似,只不过第一步需要勾选上War插件选项

使用gradle后java文件 gradle init.gradle_gradle_05

  创建完成后的目录文件中也会添加webapp目录:

|---- 项目目录
|   |---- .gradle目录
|   |---- gradle目录
|      |---- wrapper目录
|         |---- gradle-wrapper.jar文件
|         |---- gradle-wrapper.properties文件
|   |---- src目录
|      |---- main目录
|         |---- java目录
|         |---- resouces目录
|         |---- webapp目录(war项目添加的文件目录)
|            |---- index.jsp文件
|      |---- test目录
|         |---- java目录
|         |---- resouces目录
|   |---- build.gradle文件
|   |---- gradlew文件
|   |---- gradlew.bat文件
|   |---- settings.gradle文件

2.2、项目文件目录详解

2.2.1、gradle目录

2.2.1.1、gradle目录下gradle-wrapper.jar文件

    可以利用它进行安装项目默认的gradle,这里由于我是事先已经在电脑上安装了gradle,所以具体如何利用wrapper自动安装gradle,后面如果有需要再进行说明

2.2.1.2、gradle目录下gradle-wrapper.properties文件
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
  • distributionUrl属性
      distributionUrl是要下载的gradle的地址,使用哪个版本的gradle,就在这里修改。

    gradle的3种版本:

  1. 完整版(gradle-xx-all.zip),包含了各种二进制文件,源代码文件,和离线的文档。例如,https://services.gradle.org/distributions/gradle-6.1-all.zip
  2. 二进制版(gradle-xx-bin.zip),只包含了二进制文件(可执行文件),没有文档和源代码。例如,https://services.gradle.org/distributions/gradle-6.1-bin.zip
  3. 源码版(gradle-xx-src.zip),只包含了Gradle源代码,不能用来编译你的工程。例如,https://services.gradle.org/distributions/gradle-6.1-src.zip
  • GRADLE_USER_HOME
      这个就是之前我们创建的系统变量,表示用户目录,值为系统变量中配置的路径地址
  • zipStoreBase 和zipStorePath属性
      zipStoreBase和zipStorePath组合在一起,是下载的gradle-6.1-bin.zip所存放的位置。zipStoreBase表示父目录,而zipStorePath是zipStoreBase指定目录下的子目录。
  • distributionBase和distributionPath属性
      distributionBase和distributionPath组合在一起,是解压gradle-6.1-bin.zip之后的文件的存放位置。 distributionBase表示父目录,distributionPath是distributionBase指定目录下的子目录。
  • zipStoreBase和distributionBase的取值
      zipStoreBase和distributionBase有两种取值:GRADLE_USER_HOME和PROJECT。
      PROJECT:表示工程的当前目录,即gradlew所在的目录。
      GRADLE_USER_HOME: 表示用户目录,默认为gradle的安装目录,如果配置了系统变量则使用配置的环境变量目录
  • 关于存储位置和解压位置的说明
      虽然我们配置的存储位置和解压位置为 GRADLE_USER_HOME + wrapper/dists,但是其还有二级目录:
      第一级目录为:gradle的版本目录(根据下载的gradle的文件名来定的),例如:gradle-6.1-bin
      第二级目录为:url的hash目录(目录名是根据distribution url路径字符串计算md5值得来的,具体参考PathAssembler.Java中的rootDirName()和getHash(),PathAssembler.java的位置为gradle源代码的org\gradle\wrapper\PathAssembler.java目录),例如:d7p1d05fks2n0h6nqsj2ogyq5

相关截图如下:

使用gradle后java文件 gradle init.gradle_maven_06


使用gradle后java文件 gradle init.gradle_maven_07

2.2.2、build.gradle

  gradle项目自动编译的时候要读取的配置文件。比如指定项目的依赖包等。

  例如:

plugins {
    id 'java'
}

group 'com.milory'
version '1.0-SNAPSHOT'

repositories {
    //  优先使用本地maven存储
    mavenLocal()
    //  然后使用自定义的阿里云maven私服
    maven{
        url 'https://maven.aliyun.com/repository/public/'
    }
    //  最后使用maven中央仓库
    mavenCentral()
}

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

  后面详细介绍

2.2.3、settings.gradle

  文件将包含必要的一些设置,例如:任务或项目之间的依懒关系等;

三、gradle的打包:

3.1、先在之前创建的gradle项目中创建类

  具体代码如下:

package com.milory.hello_gradle;

public class HelloGradle {
    public static void main(String[] args) {
        System.out.println("hello gradle");
    }
}

3.2、打包项目的两种方式

  • 使用gradle命令打包
# build 为tasks任务的一种
$ gradle build

# clean命令
$ gradle clean

# 如果是war项目功能的话,则使用如下命令
$ gradle war
  • 使用idea打包
      找到右侧“Gradle”插件 ==》 选择需要打包的项目 ==》 选择 build目录下的build节点,截图如下:

      war项目工程则选择对应的 war 任务节点,截图如下:

3.3、运行打好的jar文件

  项目打包成功后会在当前项目工程下创建 build 目录,打包的jar文件就在 build/libs 中;

使用gradle后java文件 gradle init.gradle_gradle_08

  运行打好的jar

$ java -classpath ./build/libs/hello-gradle-1.0-SNAPSHOT.jar com.milory.hello_gradle.HelloGradle

3.4、打包时添加主类信息

  上面的太麻烦了,我还要指定运行的主类,名字长一点根本记不住,所以如果我们打包时添加了主类信息,则在运行时不需要指定运行的类。

  这里需要在build.gradle 中添加 以下配置:

plugins {
    id 'java'
}

group 'com.milory'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
//	添加运行时的主类信息,com.milory.hello_gradle.HelloGradle为运行类的全类名
jar {
    manifest {
        attributes 'Main-Class': 'com.milory.hello_gradle.HelloGradle'
    }
}

repositories {
    //  优先使用本地maven存储
    mavenLocal()
    //  然后使用自定义的阿里云maven私服
    maven{
        url 'https://maven.aliyun.com/repository/public/'
    }
    //  最后使用maven中央仓库
    mavenCentral()
}

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

  重新打包,然后运行:

$ java -jar ./build/libs/hello-gradle-1.0-SNAPSHOT.jar
hello gradle