gradle构建工具
在Java开发的早期,我们要么没有太多的构建工具需求,要么就使用了其他环境中的工具。 我仍然记得构建shell脚本并创建用于开发Java的文件。 生成文件特别有趣,因为这是一个在设计时就没有考虑到Java的工具。 迁移到不同的操作系统环境也很困难。
那时我工作的地方是我们在Solaris上开发的,但是我们有一些项目同时在Windows和Solaris上存在-这是我们发现并开始使用“新”语言的原因之一,至少在那时是新的。 这使得Shell脚本无法使用,并且使文件充其量变得困难。
当蚂蚁出来时,我们跳了起来。 就像我们使用的语言一样,它是跨平台的。 这对我们来说是一个巨大的利益。
我记得当Maven出现时,存在一些阻力,因为我们有Ant。 但是到了此时,一些项目已经变得足够大,足够复杂,以至于编写和维护Ant文件是一件痛苦的事情。 随着war文件的出现以及从类路径中加载依赖项jar,查找,下载和安装每个项目的所有依赖项jar也越来越分散人们的注意力。 Maven对依赖管理的承诺以及按惯例简化构建使该工具成为多个项目的必备工具。 多年来,我工作过的许多商店都接受了Maven为编程环境带来的功能。
因此问题就变成了:有了如此强大的工具,我们还需要其他工具吗?
作为说明,我将回到成为程序员并从事建筑工作的日子。 因为我是公司所有者的儿子,所以我“得”在施工过程的所有领域工作。 我发现我真的很喜欢木锤。 它的手感很好,用它我可以轻松打出16便士的指甲。 所以我到处使用它; 我用它来做框架,铺上薄板岩,完成工作,盖屋顶,但在电气工作中却用的很少。
如果我使用了较轻的锤子,我很确定在密西西比州南部会有一些房屋,这些房屋的墙角散落的锤子把钉子钉得太深了(这是在板岩工作人员之前)用螺丝钉撑住岩石。 我还看到了屋顶人员从使用屋顶锤获得了多少好处。 如果我用过一根手指,我的手指断裂感可能会少很多。 道德:即使每个问题看起来都像钉子一样,并不是所有的锤子都是解决问题的正确方法。
关于Gradle
我最近一直在研究Gradle构建工具。 立即让我脱颖而出的一件事是,构建文件不是XML,属性文件或任何其他仅配置文本文件。 这是一个Groovy脚本。 从本文的第一部分开始,我想您可以说我已经有一段时间了。 在此之前,它是C和C ++。 基于C的语言,尤其是Java,对我来说是第二天性。 XML是我的代码输出的东西,或用于提供服务器或其他工具的配置。 我每天都在使用Java进行结构化方面的工作不如在Java中进行更多的工作。 基于Java的Groovy使我感到宾至如归。
本文的目的不是要从Maven切换到Gradle,而是要解释为什么Gradle应该出现在您的工具带中。 史蒂夫·埃伯索尔(Steve Ebersole) 撰写了一篇很棒的文章,内容涉及为何Hibernate从Maven移至Gradle进行开发。 在我看来,当您的项目可以或应该使用Maven约定时,Maven仍然是一个很好的工具。
这也不意味着是有关如何使用Gradle的教程。 已经有一些不错的入门场所,包括Gradle网站上的用户指南。
Gradle提供了与IDE的良好集成。 Netbeans的最新版本尤其适用于Gradle。 Gradle有一个更好的多模块构建系统,它的插件系统像编写插件一样强大而直接。 我认为,这是一个非常好的编写和成熟的构建工具。
一个实际的例子
对我而言,Gradle最强大的功能是脚本是代码。 确切地说,很时髦。 有时我们都会遇到对项目有一个要求的项目,这些要求将它们与其他项目区分开来。 有几次我编写了快速的Griffon项目来维护配置数据,否则我将不得不为其维护SQL脚本。 Griffon是一个Groovy快速桌面应用程序环境,用于生成可作为可运行JAR文件或applet部署的独立应用程序。 当我必须进行更改时,然后必须将其复制到我从中运行应用程序的目录中,或复制到网络中以供其他人运行。
Gradle允许我编写该逻辑构建脚本。 由于Gradle基于Groovy,因此它附带了所有Groovy以及Java的工具和库。 例如,添加一个Swing对话框来选择将JAR复制到哪个目录,然后进行复制,就像将代码添加到构建文件一样简单:
import javax.swing.JFileChooserdef dirDialog = new JFileChooser(dialogTitle: "Choose directory to copy jar to",fileSelectionMode: JFileChooser.DIRECTORIES_ONLY,approveButtonText: "Set directory",acceptAllFileFilterUsed: false
)task copyJar(type: Copy) {from 'build/libs/DocExample.jar'def targetDir = dirDialog.showSaveDialog()if(targetDir == JFileChooser.APPROVE_OPTION ) {targetDir = dirDialog.getSelectedFile()into targetDir}
}
然后从IDE或命令行运行copyJar,执行任务以选择目录,然后复制文件。
好的,这可能有点虚构,但是请考虑在构建期间将文件通过FTP传输到服务器或从服务器通过FTP发送类似的要求。 您可以使用来自Jibble的SimpleFTP之类的东西来满足该要求。 由于此文件是作为JAR文件提供的,您可以将其放在类路径中,因此可以像在此使用JFileChooser一样,在构建脚本中简单地使用它。
总之, Gradle是一种功能强大且用途广泛的工具,应在工具带中占据一席之地。
翻译自: https://www.javacodegeeks.com/2013/09/gradle-do-we-need-another-build-tool.html
gradle构建工具