• Maven


    Apache Maven一个潜在的基于java的apache ant的构建工具的替代者。两者之间的比较:
    第一:ant脚本是可以直接运行在maven中的。maven和ant最大的差别就是在于maven的编译以及所有的脚本都有一个基础,就是POM(project object model)。这个模型定义了项目的方方面面,然后各式各样的脚本在这个模型上工作,而ant完全是自己定义,显然maven更胜一筹。
     第二:Maven对所依赖的包有明确的定义,如使用那个包,版本是多少,一目了然。而ant则通常是简单的inclde 所有的jar。导致的最终结果就是,你根本无法确定JBoss中的lib下的common-logging 是哪个版本的,唯一的方法就是打开 META-INF 目录下MANIFEST.MF。估计JBoss迟早会转向Maven的。
     第三:Maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。这一切都是自动的,而ant需要自己定义了。这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码,小得很,而反之,ant的发布则要把所有的包一起发布,显然maven又胜了一筹。
    第四:maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode reference,等。而ant都需要自己去写。试试 maven site 的效果。
    第五:maven目前不足的地方就是没有象ant那样成熟的GUI界面,不过mavengui正在努力中。目前使用maven最好的方法还是命令行,又快又方便。
    MavenIDE网站提供了各种流行开发工具下相应的插件
    点击次数   官方主页【官方主页】   下载地址【下载地址】

    网友留言/评论

    我要留言/评论

    相关开源项目

    JAM:JAM(JavaGen Ant Modules)是一个标准组件化的ANT工具包,用来构建J2EE应用程序。它由ANT Scripts集合组成,这些脚本用来执行所有Java/J2EE多应该有的构建任务比如:编译,打包,测试,部署和J2EE服务器控制。JAM 已经发展一个卓越的构建框架,它已经可以支持CVS, Axis, Castor, JMX, Hibernate并支持JUnit 与 Cactus测试,XDoclet与基于UML的代码生成技术等。
    Savant:Savant是ANT的一个扩展。在使用Savant之前你必须先下载ANT的1.6.1以上的版本。
    GenJar:GenJar用来生成Jar文件是一个特殊的ANT任务.它依据于类与类之间的从属关系来生成Jar文件而不是简单地依据于一个目录中的内容.
    Gradle: Gradle是一个基于Groovy的构建工具,它使用Groovy来编写构建脚本,支持依赖管理和多项目创建,类似Maven,但比之简单轻便。为Ivy提供了一个layer,提供了build-by-convention集成;而且它还让你获得许多类似Maven的功能比如传递依赖管理和约定大于配置。
    CPMake:CPMake是一个Java开发的类似于GNU make的构建工具可以用于C, C++, Java, C#, XSL ...等。它的构建文件用Java脚本语言(可以是BeanShell, Rhino, Jython and Groovy)来编写以便增加灵活性。因此用户可以根据自己的项目来定制make文件。
    Invicta:Invicta是一个开源的构建管理工具.它使用简单的项目定义文件,来生成强大的构建脚本(Apache ANT脚),从而隐藏他们的复杂性。
    Rant:Rant代替远程ANT,它是一个分布式编译系统。它允许一个ANT文件去编译另外一个系统并可接收发生的异常。
    Continuum:Continuum可用于Java项目构建的持续集成,使用简单。它内置支持Maven 2,Maven 1, Ant和Shell Scripts.
    JMK:JMK 这个应用程序用于保证一套文件是处于一致的状态。它基本上是要作为大多数Unix系统中的一部分,但按照平台无关性而设计。
    Hudson:可扩展的持续集成引擎。主要用于:
    1.持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
    2.监控一些定时执行的任务。
    Hudson拥有的特性包括:易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。易于配置-所有配置都是通过其提供的web界面实现。集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。生成JUnit/TestNG测试报告。分布式构建支持-Hudson能够让多台计算机一起构建/测试。文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。