简单介绍Gradle编译环境

简单介绍Gradle编译环境

Author:Jimmy
Date:2018.04

本文主要是介绍通过安装Gradle,然后配置gradle的脚本进行编译。

1、环境配置

  • 安装jdk(jdk的版本必须是大于等于7以上的版本)

    • 下载地址:Jdk下载
    • 运行命令:java --version 查看jdk版本号是否安装成功。
    java version "1.8.0_162"
    Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
  • 安装Gradle
    安装gradle的方式有很有,不同的系统平台安装的方式也不同,本文主要是介绍windows10上的安装模式,如果需要参考linux等,请查看官网:Install Gradle

    1. 下载gradle:Gradle Download
    2. 我们选择 complete 的包下载。
    3. 配置Gradle的环境变量到Path
    4. 运行命令:gradle -v 查看gradle版本号是否安装成功。
    Gradle 4.4
    Build time: 2017-12-06 09:05:06 UTC
    Revision: cf7821a6f79f8e2a598df21780e3ff7ce8db2b82
    Groovy: 2.4.12
    Ant: Apache Ant(TM) version 1.9.9 compiled on February 2 2017
    JVM: 1.8.0_162 (Oracle Corporation 25.162-b12)
    OS: Windows 10 10.0 amd64

    到此我们的基本环境已经配置完成。gradle是基于Groovy语言,但是gradle内部自带了Groovy,所以我们不需要单独去安装Groovy。

2.构建Gradle的编译脚本

  • 初始化gradle的工程

    1. 在桌面建立一个basic-demo的目录
    2. 在cmd中cd进入该目录
    3. 输入命令gradle init初始化工程环境,并打印如下文本:
    Task :init
    The build file 'build.gradle' already exists. Skipping build initialization.
    BUILD SUCCESSFUL in 0s
    目录中则会生成如下文件:
    
    ├── build.gradle
    ├── gradle
    │ └── wrapper
    │ ├── gradle-wrapper.jar
    │ └── gradle-wrapper.properties
    ├── gradlew
    ├── gradlew.bat
    └── settings.gradle

    此时,我们已经完成了gradle工程默认目录的生成。接下来我们将介绍一下如何通过gradle对简单的java目录进行编译。

3.编译一个简单的hello Word的java代码

  • 建立gradle工程环境

    1. 建立一个basic-java-demo的目录
    2. 在该目录中执行命令 gradle init --type java-application ,这一次我们带入type参数对gradle工程进行初始化,其目的是为了生成一个java-application类型的工程。
    3. 目录中则会生成如下文件:
    ├─.gradle
    │ ├─4.4
    │ │ ├─fileChanges
    │ │ ├─fileHashes
    │ │ └─taskHistory
    │ └─buildOutputCleanup
    ├─gradle
    │ └─wrapper
    └─src
      ├─main
      │ └─java
      └─test
          └─java

    这个时候,我们的java application工程已经创建完毕,在src/main/java/的这个目录中,有一个App.java文件,这个文件中就有我们的main()函数了。

  • 执行java工程
    通过命令 gradle run 可以执行当前的gradle项目工程。

    > Task :run
    Hello world.
    BUILD SUCCESSFUL in 0s

    执行run命令后会打印出如上文本,表示task run已经执行了App.java这个类的main()方法。具体为何会执行App.java这个类,此时我们可以打开build.gradle文件查看gradle的脚本:

    // Apply the java plugin to add support for Java
    apply plugin: 'java'
    // Apply the application plugin to add support for building an application
    apply plugin: 'application'
    // In this section you declare where to find the dependencies of your project
    repositories {
      // Use jcenter for resolving your dependencies.
      // You can declare any Maven/Ivy/file repository here.
      jcenter()
    }
    dependencies {
      // This dependency is found on compile classpath of this component and consumers.
      compile 'com.google.guava:guava:23.0'
      // Use JUnit test framework
      testCompile 'junit:junit:4.12'
    }
    // Define the main class for the application
    mainClassName = 'App'

    在以上代码的最地处,我们可以看到有一行代码:mainClassName = 'App' 这里便是设定了当前执行的主类的名字了。

  • 编译java文件

    接下来我们就要进行class的编译和jar包的生成。
    在工程的跟目录输入 gradle build ,会出现一下代码:

    BUILD SUCCESSFUL in 1s
    7 actionable tasks: 7 executed

    这表示我们的工程中已经编译完毕了。
    在工程的根目录中会出现一个build目录,其内容如下:

    ├─classes
    │ └─java
    │ ├─main
    │ └─test
    ├─distributions
    ├─libs
    ├─reports
    │ └─tests
    │ └─test
    │ ├─classes
    │ ├─css
    │ ├─js
    │ └─packages
    ├─scripts
    ├─test-results
    │ └─test
    │ └─binary
    └─tmp
      ├─compileJava
      ├─compileTestJava
      └─jar

    libs这个目录中,我们则可以找到刚才编译出来的jar包,
    classes目录中,我们则可以找到相对的classes文件。
    distributions这个目录中,则会看到2个压缩包,一个是tar,一个是zip,这两个文件中都包含了相同的文件,只是用了不同的打包压缩方式。压缩包中有2个文件夹,分别是libbin
    lib:这里面包含了我们自己开发的App类的jar,同时也宝行了我们所依赖的jar文件。
    bin:这里面有2个脚本文件,一个是linux,一个是windows的bat脚本文件,其目的是为了执行我们的jar包。

    注:在这里我们使用的是 gradle build 而不是 gradlew build 因为我们调用的是环境变量Path中配置的gradle,如果执行的是gradlew 那么则会在gradle/wrapper中重新下载一个gradle-wrapper.properties中配置的gradle了。

4.扩展

  • type的扩展:
    在前面我们指定了 --type 生成了一个java的工程,其实type还有很多的类型,例如:

    java-application
    java-library
    scala-library
    groovy-library
    basic

    我们可以根据不同的需求来构建不同的编译工程。

  • task的扩展:
    gradle为我们提供了非常多的task方法,更具应用不用的gradle plugin则可以调用各种各样的task命令,同样我们也可以自定义一些task命令,让gradle执行,而这些task命令我们既可以用java写成gradle插件,在脚本中应用,也可以直接在脚本中使用Groovy命令编写task来执行。具体方式可以参考Writing Gradle Plugins.

5.总结

到此我们已经大概简单的介绍完了gradle的环境搭建、基础用法以及如何简单的生成一个java的工程,最后给出了一些很小的扩展。
gradle是一种编译方式,它主要的目的是在于将我们复杂的编译过程通过配置脚本的方式简单化。而能够将这些方式简单的工具和平台是非常多的,而gradle的话,我个人认为是比较优秀的一款编译平台。
gradle的用法还有非常的多,它可以协助我们更方便的编译c、scale、android等多样化的工程,同时我们也可以借助gradle平台编写自己的插件,个性化自己的编译过程。

6.参考文献

1.Installation
2.Creating New Gradle Builds
3.Building Java Applications

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值