时至今日,若是你的Java项目依然须要启动一个特定的工具,好比IDE,才能编译部署,那你的项目不在本文的讨论之中,由于实在落后得太让人无语了。 html
好,回归正题。旧时代的Java世界,构建工具等同于两个词Ant 和 Maven。 java
Ant源自Make,同JUnit同样,它也是一个航班产物(参见《Ant权威指南》 序)。不过,Make的基础注定了它的起点不高,全部一切都要手工打造。我还依稀记得曾几什么时候,往往开始一个项目都要从新复制一份Ant脚本,修修改改。 Maven给了人们新的但愿,目录结构的约定、依赖管理、IDE集成,那时看来,几近完美。是的,几近,还差了那么一点点。就是那么一点点,倒是致命伤。 node
只要一个项目进行一段时间,一个必然遇到的问题就是,编写新的自动化脚本。由于每一个项目都有本身的特定需求,标准作法必然是没法知足的。扩展 Maven对任何新手都是一件头疼的事,咱们要学会编写插件,要搞清楚生命周期,这时,忽然会唤起一丝丝对于ANT的怀念,虽然它作简单事不容易,但作复 琐事却也没这么困难。 程序员
若是那些日子,咱们不得不忍受Ant和Maven的不完美,那如今,是时候抛弃它们了。新时代Java构建有两个很好的候选:Gradle 和 Buildr。在我看来,它们真正比Maven更强大的地方,编写本身的任务更加容易。更值得兴奋的一点是,咱们终于能够抛弃冗长的XML,选择一种更优雅的程序设计语言来写代码了,这几乎意味着你能够作到想作的一切。 spring
Buildr是Apache出品的构建工具,它以Ruby做为构建脚本。我曾在InfoQ发表过一篇很长的文章《软件开发地基》,讨论软件项目应该具有一些基础构建项,就是以Buildr为基础的。有兴趣的话,能够参考一下。这里就再也不赘述。顺便说一下,那篇文章里的内容,除了某些写法如今须要作一些微调,大部份内容依然是适用于大多数Java项目。 shell
Gradle如今是整个Java社区的构建新宠,它采用Groovy做为本身的构建语言。若是你知道,Groovy是一门诞生自JVM平台的语言,这就决定了它要比其它移植到JVM上的语言能更好的适应JVM平台,它能够采用更符合Java世界的方式无缝地整合Java既有的程序库,而没必要像移植语言那样削足适履。 apache
初涉Gradle,最让人吃惊的一点莫过于它详尽的文档,涵盖了Gradle使用的方方面面,这是许多开源软件项目没法媲美,即使早在它的1.0版本还没有发布之时。固然,能作到这一点是由于它背后有一个公司在支撑:GradleWare,这意味着若是你须要商业支持,也是能够的。 app
Gradle 1.0还没有发布之,它就捧回2010年的Spring大奖和入围了2011年的JAX大奖。若是你还须要更多的信心,做为Java开发人员,你不可能不知道Spring,那Spring转投Gradle怀抱,应该是对Gradle最有利的支持了。 maven
说了这么多,程序员最喜欢看到的东西仍是代码。首先,请自行下载安装Gradle,而后,按照常见的Java项目布局把代码准备好(感谢Maven为咱们给予咱们约定),好比: 工具
src/main/java,源代码文件目录 src/main/resources,资源文件目录 src/test/java,测试代码目录
下面是一个简单的Gradle构建脚本,将其存放于build.gradle
apply plugin: 'java' repositories { mavenCentral() } dependencies { compile( 'com.google.guava:guava:13.0.1', 'joda-time:joda-time:2.1' ) testCompile( 'junit:junit:4.10', 'org.mockito:mockito-all:1.9.0' ) } (build.gradle)
接下来的事情就很简单了,在命令行里键入
gradle build
若是一切正常,咱们应该会看到构建成功的字样,而后,到build/lib,你就看到本身构建出来的JAR文件了。固然,这只是一个简单得不能再简单的例子,若是须要了解更多,Gradle那详尽的文档即是最好的去处。
关于构建工具的选择考量,我曾经写过一篇blog专门讨论,《选择,构建工具》。若是你在作构建工具的技术选型,能够参考。