在学校的时候还总是自己用eclipse自带的jar导出工具,然后人工来给项目打包,那是相当的原始。

而后工作了,项目中都是用ant,慢慢的开始学会使用这个工具。感觉就和脚本一样,很容易读懂,做项目构建还是不错的。
最近开一些开源的项目,基本都没有使用ant的了,以maven2居多,也有ivy和其他的。看来项目构建工具是发展了,有了更多的新东西出来,那到底哪个好一点呢?最近查了点资料,横向比较一下吧。
 
我初步调查了一下Maven, Ivy, Gradle, sbt这4个工具
 
Maven2:
当今最为流行的构建工具,提供了项目构建、测试、发布等一整套流程的管理。当年非常有预见性的提供了一套包依赖的解决方案,但是这个方案设计不够好,也一直被人们诟病。提供了比较强的规约,有人认为这很不自由,但是我觉得这样的规范更好,特别是目录结构有个统一标准,这样非常清晰。但是他的配置文件写起来确实有点麻烦,特别是一个ant工程要转过来,真的要花不少工夫。
 
Ivy:
Apache提供的一个ant的子项目,和ant完全兼容,用起来倒是方便了。提供了一套更合理的包依赖解决方案,还可以直接使用Maven的包依赖库,真是充分利用已有资源啊,难道这样不侵权?其他方面都是一些对ant的简单扩充,其实并没有太多新的特性。
 
Gradle:
用了Grails感觉他的配置还是很清爽的,其调用的就是Gradle。最大的特点就是用Groovy脚本来代替了XML,同时也处理了包依赖问题。但用的人貌似不是很多,属于潜力股。
 
sbt:
全称是simple build tool,是在Ivy基础上进行的封装,引入了Maven的目录结构,具体配置又是直接使用Scala,算是各种的综合体。在Scala项目中使用应该还是不错的,可惜目前的版本只支持Scala2.7.7,而且看了下demo感觉配置起来也有点麻烦。
 
看来看去,感觉其实只使用ant也没有什么特别大的问题。如果非要用替换,使用Ivy感觉风险最小,项目组接受程度会高点。现在项目的ant脚本已经写好了,等有空引入Ivy吧~,目录结构还是用Maven的好了

浅谈java构建工具的选择的更多相关文章

  1. 浅谈java反序列化工具ysoserial

    前言 关于java反序列化漏洞的原理分析,基本都是在分析使用Apache Commons Collections这个库,造成的反序列化问题.然而,在下载老外的ysoserial工具并仔细看看后,我发现 ...

  2. 浅谈Java语言环境搭建-JDK8

    title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...

  3. 浅谈java性能分析

    浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...

  4. 浅谈Java的集合框架

    浅谈Java的集合框架 一.    初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...

  5. 浅谈java类集框架和数据结构(2)

    继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...

  6. 浅谈 Java 主流开源类库解析 XML

    在大型项目编码推进中,涉及到 XML 解析问题时,大多数程序员都不太会选用底层的解析方式直接编码. 主要存在编码复杂性.难扩展.难复用....,但如果你是 super 程序员或是一个人的项目,也不妨一 ...

  7. 浅谈Java中的final关键字

    浅谈Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  8. 浅谈Java线程安全

    浅谈Java线程安全 - - 2019-04-25    17:37:28 线程安全 Java中的线程安全 按照线程安全的安全程序由强至弱来排序,我们可以将Java语言中各种操作共享的数据分为以下五类 ...

  9. 浅谈JAVA GUI中,AWT与Swing的区别、联系及优缺点

    浅谈JAVA GUI中,AWT与Swing的区别.联系及优缺点 A.区别 1.发布的时间 AWT是在JDK 1.0版本时提出的 Swing是在AWT之后提出的(JAVA 2) 2. ”重量” AWT是 ...

随机推荐

  1. PowerDesigner使用积累

    PowerDesigner想必没人不知道吧?著名的CASE工具,目前最新版本为15.2,用于软件建模,可以从需求直到物理模型,支持UML2.0语法,可用于UML图绘制.最大特色是能够使设计到实现无缝衔 ...

  2. binlog和redo log日志提交

    组提交(group commit)是MYSQL处理日志的一种优化方式,主要为了解决写日志时频繁刷磁盘的问题.组提交伴随着MYSQL的发展不断优化,从最初只支持redo log 组提交,到目前5.6官方 ...

  3. 扩展BSGS算法

    求解A^x ≡ B mod P (P不一定是质数)的最小非负正整数解 先放几个同余定理: 一.判断如果B==1,那么x=0,算法结束 二.若gcd(A,P)不能整除 B,则 无解,算法结束 三.若gc ...

  4. Python3.X 安装Scrapy

    安装Scrapy有两种方法: 1.pip install Scrapy 这种方式按道理来说是最简洁最快速的,但是有的时候安装不成功,只能更换一种方式,下载源文件安装的方式,详见下面一步. 2.下载文件 ...

  5. hibernate update 只更新部分字段的3种方法(转载)

    hibernate 中如果直接使用 Session.update(Object o); 会把这个表中的所有字段更新一遍. 比如: public class Teacher Test { @Test p ...

  6. django基类View.as_view()

    参考:https://www.zmrenwu.com/post/53/ 详细见参考 一般请求的判断方法: def view(request, *args, **kwargs): if request. ...

  7. 图论之二分图-HihoCoder1121

    题目链接:https://hihocoder.com/problemset/problem/1121 二分图的相关概念:https://blog.csdn.net/qq_36345036/articl ...

  8. Nginx 部署、反向代理配置、负载均衡

    Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...

  9. css文字效果(文字剪贴蒙版,text-shodow的应用,文字排版等…)

    .katex { display: inline-block; text-align: initial; } .katex { font-family: Consolas, Inconsolata, ...

  10. 多线程出现 java.lang.NumberFormatException: multiple points

    多线程下导入数据,发现同一个文件每次导入成功的数据量都不一致,经检查,某些数据偶尔会报错  java.lang.NumberFormatException: multiple points 原因是导入 ...