简单介绍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- 下载gradle:Gradle Download
- 我们选择
complete
的包下载。 - 配置Gradle的环境变量到
Path
中 - 运行命令:
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的工程
- 在桌面建立一个
basic-demo
的目录 - 在cmd中
cd
进入该目录 - 输入命令
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工程环境
- 建立一个
basic-java-demo
的目录 - 在该目录中执行命令
gradle init --type java-application
,这一次我们带入type参数对gradle工程进行初始化,其目的是为了生成一个java-application
类型的工程。 - 目录中则会生成如下文件:
├─.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个文件夹,分别是lib
和bin
。
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