Gradle part1 HelloWorld
(https://spring.io/guides/gs/gradle/#scratch)
----gradle helloworld-----
1.下载后安装
Unzip the file to your computer, and add the bin folder to your path.
解压文件,配置环境变量。 (D:\build\gradle-2.2.1\bin;)
2.测试安装情况
命令行输入:gradle
正常情况会看到欢迎信息,表示已可以使用。
3.gradle具体操作:
a.当处于一个不存在build.gradle的文件夹中执行gradle tasks 可以查看在没有任何配置下gradle可以执行的操作。
b.我们可以通过增加一个build.gradle配置文件,并在该文件中增加插件配置来增加gradle可执行的操作。如增加java插件之后就可以执行编译、创建javadoc以及运行测试程序的 操作。
apply plugin: 'java'
在命令行中将当前路径转到含有上面这个build.gradle文件的路径下,执行gradle tasks 可以看到,有了这个配置文件,就可以执行gradle build操作了。
d.在当前路径下创建文件夹结构: src\main\java\hello 然后在hello中创建两个java源文件,HelloWorld.java
package hello;
public class HelloWorld {
public static void main(String[] args) {
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
和Greeter.java
package hello;
public class Greeter {
public String sayHello() {
return "Hello world!";
}
}
e.然后在cmd中执行 gradle build 命令,gradle就进行编译了。
编译完成后,可以看到BUILD SUCCESS的提示信息。编译后在当前文件夹下会多出两个两个文件夹.gradle 和 build,build中可以看到编译后的文件就存放在classes中。
dependency_cache中存放的是依赖包。但当前代码中没有任何其他的依赖包,所以该文件夹是空的。
f.现在我们在HelloWorld.java中增加一个当前本地时间的输出语句:
package hello;
import org.joda.time.LocalTime;
public class HelloWorld {
public static void main(String[] args) {
LocalTime currentTime = new LocalTime();
System.out.println("The current local time is: " + currentTime);
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
此时HelloWorld有了外部依赖,LocalTime。就需要在build.gradle中增加配置,才能进行build了。
首先增加repositories ,gradle将会根据在repositories中指定的位置获取第三方依赖包。
repositories {
mavenCentral()
}
然后声明需要处理的依赖包:
dependencies {
compile "joda-time:joda-time:2.2"
}
PS:dependencies中参数有compile,还可以有providedCompile和testCompile。
providedCompile中声明的依赖包,是用于编译工程代码的,但这部分依赖包是在容器运行代码时使用的(例如JAVA Serverlet API)。
testCompile中声明的依赖包则是在编译测试或运行测试时会用到的,而在正式运行或编译时不会需要用到。
增加这个声明后,我们再进行build操作(执行命令gradle build),会发现gradle会从maven站上下载声明的jar包和pom文件(此处为:joda-time-2.2.pom ,joda-time-2.2.jar)

如上图所示,在gralde执行build操作时,会首先从指定的repositories下载配置中指定的依赖包,然后进行编译等操作。
(***此处为通过gradle运行***)g.如果要运行这个程序,我们需要在配置声明工程类型,并指定入口类
apply plugin: 'application' mainClassName = 'hello.HelloWorld'
如配置好后,就可以运行这个HelloWorld程序了。运行命令 gradle run。如果一切正常应该会出现以下反馈信息:

part1 plus:
上面的内容是在安装了gradle时,才能进行执行的。而gradle提供的gradlew脚本可以在没安装gradle的情况下就可以进行gradle build操作。同时gradle wrapper在windows ,OS X ,linux中都是可以运行的。
我们可以在bugild.gradle配置中增加如下配置:
task wrapper(type: Wrapper) {
gradleVersion = '2.3'
}
然后执行gradle wrapper命令,gradle就会把gradlew下载到当前路径中的initial文件夹中。通过gradle下载这个wrapper程序之后。就可以执行各种操作了。同时我们可以把这个initial文件夹上传到版本控制系统中,这样所有人就都可以很方便的采用同样的版本来编译工程了,而且不需要在其他机器上再进行gradle的安装。(从这部分内容中,可以猜想:gradlew是需要安装一次gradle然后才能通过gradle来下载安装的。同时生成的gradlew是和在配置中指定的gradle版本有关的。)(PS:此处,在执行wrapper时发现并没有生成initial文件夹,而是将该文件夹中的内容直接生成在了当前路径下。)
接下来通过gradlew来进行编译:gradlew build 或者是 ./gradlew build
当首次通过gradlew进行编译时,gradlew会下载wrapper配置中指定的gradle字节码文件到本地,从这里看出,gradlew上传到版本控制中后,其他人在使用gradlew时就不再需要重新安装gradle了,同时也不需要去管到底使用什么版本的gradle。
编译完成后,从build/libs/中可以找到打包好的jar文件,可以通过java -tvf build/libs/gs-gradle-0.1.0.jar 查看其中的内容,会发现虽然我们指定了依赖包,但打好的包中还是没有相应的依赖包存在。(***如果没在上面的步骤g中添加了apply plugin:application 和 mainClassName:属性,这个jar包也是不可以直接用来运行的。在官方指南中会发现这两个属性是在介绍gradlew时并且在使用gradlew build后才增加的***)
Gradle part1 HelloWorld的更多相关文章
- Gradle的HelloWorld
Gradle的脚本名为 build.gradle task hello{ doLast{ println("Hello World") } } 运行:gradle -q hell ...
- Gradle命令行黑魔法
毫无疑问,现在Gradle已经成为java世界最火的构建工具,风头已经盖过了冗余的ant,落后的maven.Gradle是以Groovy语言编写的一套构建脚本的DSL,由于Groovy语法的优雅,所以 ...
- Android Studio And Gradle
AS特色: 智能感知体验特好,堪比VS 布局预览,手写布局后预览页面即时显示,便于布局调整和优化 编辑速度飞快流畅,毫无eclipse的卡顿 布局或源码中有图标和颜色的预览,十分直观 调试时体验极佳 ...
- 使用gradle构建java项目
gradle是什么东东 gradle是继ant,maven之后另外一种的面向java的自动化项目构建工具,他是基于groovy语言的.相对于ant,maven,gradle显得更加简单. 安装grad ...
- [转] 使用Spring Boot和Gradle创建项目
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 ...
- Gradle之恋-任务1
任务作为Gradle的核心功能模块,而且Gradle的任务还可以具有自己的属性和方法,大大扩展了Ant任务的功能.由于任务相关内容比较多,分为两篇来探讨,本篇主要涉及到:任务的定义.任务的属性.任务的 ...
- gradle入门(1-4)多项目构建实战
一.多项目构建 1.多项目构建概念 尽管我们可以仅使用单个组件来创建可工作的应用程序,但有时候更广泛的做法是将应用程序划分为多个更小的模块. 因为这是一个非常普遍的需求,因此每个成熟的构建工具都必须支 ...
- Gradle 1.12用户指南翻译——第四十二章. Announce插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- gradle第一篇:初入门
有的时候,感觉技术真是一年一个样,之前呢ant式微,被maven取代,而现在呢,maven慢慢式微,又渐渐要被gradle取代,不说多了我们现在就来讲一讲gradle吧. 第一步——安装: ①安装所需 ...
随机推荐
- PyInstaller安装使用方法
PyInstaller可以把Python应用程序及其所有依赖项捆绑到一个包中.用户可以在不安装Python解释器或任何模块的情况下运行打包的应用程序.PyInstaller支持Python 2.7和P ...
- LOJ2396 JOISC2017 长途巴士 斜率优化
传送门 将乘客按照\(D_i\)从小到大排序并重新标号.对于服务站\(j\),如果\(S_j \mod T \in (D_i , D_{i+1})\),那么可以少接一些水,在保证司机有水喝的情况下让编 ...
- 用python实现的一个自动聊天的机器人
因为之前想过 如果每天早上微信能够发送天气预报给我,给我老婆多好,然后就动手看网上的教程做了一个可以定时发送天气预报的程序, 最近又想到折腾,做了一个更加详细的版本.但是需要主动操作 具体操作看图. ...
- windows service承载的web api宿主搭建(Microsoft.Owin+service)
今天突然想起改良一下以前搭建的“windows service承载的web api”服务,以前也是直接引用的类库,没有使用nuget包,时隔几年应该很旧版本了吧.所以本次把需要nuget获取的包记录一 ...
- vue的一些基本知识
配置webpack及vue脚手架工具: vue-cli 2 npm install webpack webpack-cli -g npm install vue-cli -g 搭建脚手架 vue ...
- Eclipse 查看 WebService 服务请求和响应消息
每个WebService 对入参和返参都是有自己的要求的:别人调用我的WebService,需要按照我的要求进行传参.当我返回数据时,我也得告诉别人,我的返回数据是怎样组织的,方便别人读取. 那怎样查 ...
- Linux(Ubuntu 16) 下Java开发环境的配置(二)------Tomcat的配置及常见问题
前言 相比于java JDK的配置,Tomcat的配置简单的多,简直就相当于直接运行了,本文以Tomcat8.0为例进行配置 1.Tomcat的下载 地址:https://tomcat.apach ...
- Python学习之路——三元运算符推导式
三元运算符 # 生成器:包含yield关键字的函数就是生成器 def my_generator(): yield 1 yield 2 yield 3 g_obj = my_generator() # ...
- python之函数初识
一.函数的初识1.如何定义函数:def 函数名(): 代码... 例如:def my_len(): l = [1, 2, 3, 4] count = 0 for i in l: count += 1 ...
- kubeadm的安装步骤(HA)
准备3台主节点:km1/km2/km3 1.编辑kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfigur ...