使用Gradle构建Java项目
2016-03-21 15:07
453 查看
使用Gradle构建Java项目
这个手册将通过一个简单的Java项目向大家介绍如何使用Gradle构建Java项目。
我们将要做什么?
我们将在这篇文档航中创建一个简单的Java项目,然后使用Gradle构建它。
需要准备什么?
预留15分钟空闲时间一件称手的兵器(你最喜欢的IDE或者文本编辑器)
Java环境([JDK6](http://www.oracle.com/technetwork/java/javase/downloads/index.html”JDK”及以上版本)
如何完成这个手册的内容?
与大多数Spring的入门手册一样,你可以从头开始一步步完成教程中的每一步工作,也可以跳过你已经烂熟的基础步骤。不管采用那种方式,你最后都会得到可工作的代码。如果要重头开始,猛戳这里
如果要跳过基础部分,需执行以下操作:
下载并解压本文档相关源代码,或者使用Git克隆一个:
git clone https://github.com/ href="http://cpro.baidu.com/cpro/ui/uijs.php?c=news&cf=1001&ch=0&di=128&fv=11&jk=6cff5348d9d6b7f6&k=spring&k0=spring&kdi0=0&luki=9&n=10&p=baidu&q=55082150_cpr&rb=0&rs=1&seller_id=1&sid=f6b7d6d94853ff6c&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1933315&u=http%3A%2F%2Fwww%2E4byte%2Ecn%2Flearning%2F119960%2Fshi%2Dyong%2Dgradle%2Dgou%2Djian%2Djava%2Dxiang%2Dmu%2Ehtml&urlid=0" target=_blank>spring-guides/gs-gradle.git
cd 进入
gs-gradle/initial
参考到安装Gradle部分
当你完成后,你可以使用
gs-gradle/complete来检查你的结果。
配置项目
首先需要配置一个项目给Gradle进行构建。为了保证我们能专注于Gradle,目前最好创建最简单的Java项目。
创建目录结构
在项目主目录下,创建以下子目录;在*nix系统下可以使用命令:mkdir -p src/main/java/hello
src/main/java/hello目录中,你可以创建任何Java类。为简单起见并且为了与指南的其余部分保持一致,我们建议创建两个雷
HelloWorld.java和
Greeter.java
src/main/java/hello/HelloWorld.java的源代码:
src/main/java/hello/Greeter.java的源代码:
安装Gradle
到目前为止,我们已经搭建了一个可以用来使用Gradle构建的项目,现在到了安装Gradle的时候了。Gradle可以从http://www.gradle.org/downloads下载。我们仅需要下载Gradle的二进制发布包,所以在刚才提供的连接上寻找
gradle-version-bin.zip文件(当然,也可以下载
gradle-version-all.zip,它包含源代码、文档以已编译代码)
解压缩下载的文件,并将解压后目录中的
bin目录加到环境变量中。
可以在命令行中执行以下代码来测试Gradle是否安装成功
Gradle可以做些什么呢?
Gradle已经安装到系统上了,那么它可以做什么呢?在我们为项目创建build.gradle文件之前,我们可以先问一下Gradle目前有哪些可用的任务(Tasks):
build.gradle文件,你可以看到一些非常基础的任务,类似于:
build.gradle后,一些任务将变得非常有用。
如果在
build.gradle中配置了插件(plugins)上面的任务列表会变得更长,最好在配置插件后使用
gradle task看看那些任务是可用的。
刚说到配置插件,马上我们就会配置一个插件来启用基础的Java构建功能。
构建Java代码
先从简单的开始,创建一个最简单的只有一行的build.gradle文件:
gradle task,我们可以看到任务列表中增加了一些内容,比如:用来编译java项目的任务、用来创建JavaDoc的任务、用来执行单元测试的任务。
我们经常使用的任务是
gradle build,这个任务执行以下操作:编译、执行单元测试、组装Jar文件:
可以到”build”目录中查看构建结构,在这个目录中我们可以看到很多子目录,其中有三个我们需要特别注意:
classes: 保存被编译后的.class文件
reports: 构建报告(如:测试报告)
lib: 组装好的项目包(通常为:.jar或者.war文件)
classes目录包含编译生成的所有.class文件。执行完编译后,我们应该可以在这里找到”HelloWorld.class”和”Greeter.class”。
到目前为止,我们项目并没有申明任何依赖,所以”debendency_cache”目录是空的。
“reports”目录会包含项目单元测试的测试报告,当然,当前项目并未编写任何单元测试,所以,也是空目录。
“lib”目录包含打包后的jar或war文件,在后面的内容中我们将学会如何定义JAR的名称和版本号。
申明依赖
我们的Hello World例程非常简单且不依赖于任何第三方库,但是大多数应用程序都会依赖第三方库提供的通用或复杂的功能。例如:假设我们希望更好的说”Hello World!”,我们希望应用程序能同时输出当前的日期和时间。当然这可以使用Java自身的日期和时间相关库,但是我们可以使用”Joda Time”库实现更有趣的功能。
首先,把HelloWorld.jara类修改成下面这样:
HelloWorld使用”Joda Time”的
LocalTime类来获取和输出当前时间。
如果我们马上执行
gradle build来构建项目,构建过程将会失败,因为我们并未将”Joda Time”库声明为编译时依赖库。
首先,我们需要添加一些配置来定义第三方库的来源:
repositories定义,告诉构建系统通过Maven中央库来检索项目依赖的软件包,Gradle在很大程度上依赖Maven构建工具的许多约定和基础功能,包括使用Maven中央的库来处理依赖关系。
现在我们可以使用第三方库了,但现需要定义:
dependencies块,我们定义了一条Joda Time的依赖项。这里,明确指定使用joda-time组内的版本为2.2的joda-time库。
另一个要注意的是,我们在这个依赖定义中指定依赖是
compile范围的。意思是,这个库在编译和运行时都需要(如果我们正在构建WAR文件,这个文件会在
/WEB-INF/libs目录下)。另外值得注意的依赖类型包括:
providedCompile:在编译期间需要这个依赖包,但在运行期间可能由容器提供相关组件(比如:Java
Servlet API)
testCompile:依赖项仅在构建和运行测试代码时需要,在项目运行时不需要这个依赖项。
最后,我们来定义我们将生成的Jar文件的名字:
jar块定义如何命名JAR文件,在上面的例子中,我们的JAR文件的名字为:
gs-gradle-0.1.0.jar。
注:这个时候如果执行
gradle build,Gradle会花一些时间从Maven中央库下载Joda Time包(具体下载时间依赖于你的网速)
使用Gradle Wrapper来构建项目
Gradle Wrapper是开始一个Gradle构建的首选方式。它包含了windows批处理以及OS X和Linux的Shell脚本。这些脚本允许我们在没有安装Gradle的系统上执行Gradle构建。要实现这个功能,我们需要在我们的build.gradle文件中增加以下代码:
gradle/wrapper目录下。
在这个时候,我们需要重新构建我们的代码,构建的结果目录如下:
Gretter和
HelloWorld类。
要想让代码可以运行,我们可以使用Gradle的
application插件。增加以下内容到
build.gradle文件中。
Boot并且希望得到一个可执行的JAR文件,我们可以使用spring-boot-gradle-plugin插件。在我们的示例中,gradle没有足够的信息来了解我们的目标系统。但是,目前介绍的内容已经足够我们开始使用Gradle了。
下面是本文需要用的的
build.gradle文件:
相关文章推荐
- 使用Gradle构建Java项目
- Java国际化
- 如何成为一个牛掰的Java大神?
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- spring的filter代理
- Spring4.1 mvc 返回json时,去掉null值
- 【存储过程】在java语言中调用存储函数
- 【存储过程】 在java语言中调用存储过程
- eclipse配置Java自定义环境变量
- 网易2015编程题(一用Java实现一个多线程程序将这个10000个数输出到5个不用文件中)
- openOffice集成java中,用EXT展示
- 在eclipse中配置Hibernate
- spring 整合dubbo 测试搭建
- Java EE项目,通过127.0.0.1访问页面不变形,但是通过localhost访问页面变形
- Java将时间转换为UNIX时间戳
- 关于java的一些易错知识
- java transient关键字
- 排序算法-java
- 辗转相除法_欧几里得算法_java的实现(求最大公约数)
- java生成验证码