在学校的时候还总是自己用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. DailyWallpaper v1.03 released

    根据这一段时间的使用发现了一些问题,重新修正一下. 修正电脑从休眠状态中恢复时如果没有网络连接程序报错的bug. 添加了异常处理语句,防止抓取网页数据时的错误. 这个版本将是最后一个bug fix版本 ...

  2. 设计原则:开-闭原则(Open-Closed Principle, OCP)

    开-闭原则就是软件实体应当对扩展开放,对修改关闭.(Software entities should be open for extension,but closed for modification ...

  3. hdu 2197 求长度为n的本原串 (快速幂+map)

    Problem Description由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串?答案mod2008.例如,10 ...

  4. Linux下apache支持PHP配置

    https://www.cnblogs.com/qiuxiao/p/6815350.html https://www.cnblogs.com/polestar/p/6086552.html

  5. Android Studio之导出JavaDoc出现编码GBK的不可映射字符

    使用Android Studio导出JavaDoc时,如果在注释中添加了中文,生成时的时候会出现错误: 编码GBK的不可映射字符. 解决的办法是在Other command line argument ...

  6. BZOJ3514 Codechef MARCH14 GERALD07加强版 LCT

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3514 题意概括 N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. N ...

  7. Tr A HDU1575

    矩阵基本算法 #include<cstdio> using namespace std; int n; struct matrix { int m[15][15]; }ans,base; ...

  8. (转)MyBatis+MySQL 返回插入的主键ID

    MyBatis+MySQL 返回插入的主键ID 需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如 ...

  9. format 用法及对齐

    空格填充: 元素填充(这里是2):

  10. Failed to load resource: the server responded with a status of 404 (Not Found) favicon.ico文件找不到

      今天使用sublime以localhost方式打开html文件时(使用wamp环境提供一个Apache服务器,html文件存在于wamp环境的www文件夹下),出现favicon.ico文件找不到 ...