`
k_lb
  • 浏览: 838062 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

为什么Eclipse替代不了Maven(自己有些疑惑为什么有了eclipse,干嘛还要用ant,maven等。这篇文章解释的很清楚,也可以理解为替代不了ant)

 
阅读更多

转自:http://www.juvenxu.com/2010/06/02/why-eclipse-cannt-replace-maven/

声明:此篇文章为转载。


总有那么一批人认为IDE是无比强大的,比如Eclipse,或者更强大的MyEclipse(你是不是在用破解版本?)。Eclipse的确非常、非常、非常的优秀,它能帮你自动编译、帮你执行单元测试、帮你重构……我不想黑Eclipse,要黑的话拿Maven作为对比也太愚蠢了,应该用IDEA才对。我想说的是,Eclipse再强大也替代不了Maven这样的自动化构建工具,为什么昵?

几年前当我还没有毕业的时候,我在一家很小的软件公司实习,这家公司做一些政府项目,当时我们开发的是一个暂住人口管理系统。如果你懂中国,你应该明白这样的公司,技术人员永远是三流公民,单子都是老板通过关系喝酒吃饭拉来的,你开发出来的东西过得去就行,那群办公室里的大爷才不需要你的产品为他们提供多好的体验,他们不在乎这一类体验。因此,不要指望这样的公司对技术有多大的追求。

当时初出茅庐的我还在研究什么是Servlet,什么是JSP,什么是Tomcat,Eclipse也用得半生不熟的,哪还会去关心什么自动化构建,事实上我压根不知道世界上有自动化构建。我一遍又一遍的打包,部署到Tomcat,测试,然后修改,再打包……一个毕业不久的同事看我忙得不亦乐乎,就把MyEclipse的安装包扔给我了(当然,是破解版),然后教我怎么热部署,随改随看,我对他真是感激地要死。

我知道,很多人就是这样爱上MyEclipse的。

可是,IDE终究是只是IDE,有些事情它做不好,就像你用一字螺丝刀去拧十字的螺丝,也许能凑活,但不可能顺手。

用Eclipse你无法做到十分钟构建,更别说持续集成了。什么?你不知道什么是”10 minutes build”,不知道什么是”Continuous Integration”,那么先买几本书扫扫盲吧,例如《解析极限编程》《敏捷开发的艺术》《持续集成》。也许你会说“我知道那套敏捷的东西,可是我们公司在做CMMI评审呢,敏捷不适合我,十分钟构建和持续集成也不适合我”,好吧,也许你认为无穷装逼的文档适合你,那就别读下去了,抱歉浪费了你几分钟时间。

在开发软件的时候我们心里要清楚,GUI的操作是很难、或者说不可能自动化的。所以你不可能让电脑帮你点Eclipse中的“签出源码”、“清理项目”、(自动编译就不用点了)、“Run As Test”、……等等按钮。如果你希望将这些操作自动化,那么就需要找一个命令行工具,例如Maven。

不要告诉我你用了m2eclipse一键Build整个项目。

如果你对自动化没有什么追求,你认为点几下鼠标(偶尔点错)不是什么大问题,那允许我再问你一个问题,你能保证你机器的Eclipse配置和你同事的Eclipse配置完全一样么?你保证不了吧?各自配各自的Build Class Path,各自装了各种插件的各种版本,也许你用了正版的MyEclipse,可你同事用了破解版的(其实这种区别不会影响构建,呵呵)。各种微妙差异导致的后果是什么?

你本机编译、测试、打包、部署都没问题,可到了你同事的机器上可能就死活不行,你们坐在一起研究了一下午,最后发现Build Class Path中一个依赖的版本不一致导致了这个问题。

或许你还会说,“我只要协调大家使用一致的Eclipse配置环境就可以避免这个问题”,好吧,假设你能做到。接下来的问题是,如果你的项目有几十个或者上百个第三方依赖,它们还一直会变化,你怎么处理?

“简单!把所有不管有用没用的jar文件都扔进去,然后再慢慢挑掉一点明显不需要的,测一下就行”

是挺简单的,我也这么做过,不过问题很严重。你不能以黑盒的方式来管理项目的依赖。也许你不在乎最终的部署包无谓地增大了几十兆,不在乎这些多余的文件导致打包速度变慢。但是当依赖产生冲突的时候,你就不得不在乎了。一堆jar文件,大的、小的、带版本号的、不带版本号的……祝君好运。

所以你要一个依赖管理工具,例如Maven,或者Ant + Ivy,反正比Eclipse好。

也许你又会说,“我的项目也就10多个依赖,复制几个jar挺简单的,搞Maven那么复杂做什么?”,那么我只能祝愿你永远只需要开发只有10多个依赖的项目,而又能保持工资每年增长25%。

如果你想避免重复劳动、尽早控制风险、更可靠地管理项目依赖,那么就别把什么事情都扔给Eclipse去做。

分享到:
评论

相关推荐

    maven java maven Eclipse 环境构建

    Maven 是 Apache 组织开发的一款强大的项目管理和构建工具,它替代了传统的 Ant 工具,简化了 Java 项目的构建过程。Maven 使用一个标准的目录结构和一个基于 XML 的配置文件,称为 `pom.xml`,来管理项目依赖、构建...

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven权威指南 Authors Tim O'Brien (Sonatype, Inc.) , John Casey (Sonatype, Inc.) , Brian Fox (Sonatype, Inc.) , Bruce Snyder () , Jason Van Zyl (Sonatype, Inc.) , Juven Xu () Abstract Maven权威指南...

    Maven基础及在eclipse中配置

    在Eclipse中,可以通过安装Maven插件,将Maven集成到IDE中,使得开发过程更加便捷,可以直接在Eclipse中运行Maven命令,进行编译、测试和打包等操作。 总的来说,Maven通过标准化的流程和自动化管理,极大地提高了...

    maven使用文档,maven使用文档

    ### Maven 使用文档详解 #### Maven 简介与特点 Maven 是一款强大的项目管理和构建工具,主要用于 Java 项目的管理。Maven 提供了统一的标准流程来管理项目的生命周期、依赖关系以及项目信息等,极大地提高了开发...

    apache maven入门教程

    Apache Maven 是一个强大的项目管理工具,特别是在Java开发领域中,它替代了早期的ANT工具,提供了更为全面和便捷的项目构建和管理功能。Maven基于项目对象模型(Project Object Model,POM),能够自动化构建过程,...

    ant maven3

    2. **ant使用手册.pdf**:这是一份关于Ant的使用手册,涵盖了Ant的基本概念、任务、属性、条件以及如何编写构建脚本等内容,对于学习和掌握Ant非常有帮助。 3. **ant实用实例.pdf**:该文档可能提供了Ant在实际项目...

    maven教案-maven入门学习资料

    【 Maven 概述】 在软件开发中,尤其是在Java领域,我们常常面临一系列问题,如环境配置差异、依赖管理混乱以及项目构建的繁琐等。这些问题在 Maven 出现后得到了很好的解决。Maven 是一个强大的项目管理工具,由 ...

    maven 简单使用教程

    Maven的最新版本为2.0.9,但需要注意的是,Maven2与早期的Maven1在很多方面存在显著差异,因此在查阅第三方文档时需明确区分这两个版本。 1. Maven资源: - Maven官方网站:获取最新版本、文档和社区支持。 - The...

    maven基本命令详解

    这条命令用于生成一个名为 `damocles-autocredit` 的 Maven 项目,其所属的组 ID 也是 `damocles-autocredit`,使用的原型为 `maven-archetype-quickstart`,且在非交互模式下运行(即不需要用户输入确认)。...

    Eclipse 与Ant 资料

    【Eclipse 与Ant 资料】 Eclipse 和 Ant 是在 Java 开发领域中两个重要的工具,...同时,了解如何结合其他工具(如 Maven 或 Gradle)进行构建管理也是十分有益的,这将有助于进一步提升开发效率和项目的可维护性。

    Maven入门文档.doc

    与Ant类似,Maven可以帮助开发者完成编译、测试、打包、发布等一系列重复性工作。Maven的核心目标是通过自动化这些过程,使开发人员能够专注于核心的业务逻辑,而不是被构建细节所牵绊。 【Maven能做什么】 1. **...

    maven2完全使用手册

    Maven2完全使用手册旨在全面讲解Maven2的使用和配置,帮助开发者更好地理解和掌握这款强大的Java项目管理工具。相较于Maven1,Maven2进行了大幅度的改进,提升了性能并简化了配置过程。 1. **更快、更简单**:Maven...

    Maven完全适用手册

    Maven2引入了明确的生命周期概念,如clean、compile、test、install和deploy等,每个阶段都有对应的命令,使项目构建更加规范。 **6. 新增Dependency Scope** 新增的Scope如test,允许开发者指定某些依赖只用于测试...

    jpress非maven版本

    本篇文章将详细探讨JPress的非Maven版本,帮助用户理解和掌握在不使用Maven构建工具的情况下如何管理和运行JPress项目。 首先,我们来理解一下“非Maven版本”的含义。在软件开发领域,Maven是Apache提供的一款项目...

    Maven-Tycho-Demo:在Eclipse中构建Maven Tycho的部署示例-开源

    通过Tycho,你可以使用Maven的强大的依赖管理和构建流程来处理Eclipse插件的构建问题,避免了传统Ant脚本的复杂性。 ** Maven Tycho的核心概念 ** 1. **基于POM的构建**:Tycho遵循Maven的约定,使用Project ...

    Maven在企业中的使用

    ### Maven在企业中的使用 #### Maven概述与特性 Maven是一种强大的项目管理和综合工具,尤其在Java项目中扮演着至关重要的角色。它不仅继承了Ant的构建能力,更进一步提供了高级项目管理工具,弥补了Ant在项目管理...

    Maven2完全使用手册

    **Maven2完全使用手册** Maven2是一个强大的Java项目管理工具,它简化了构建、依赖管理和项目文档的生成。相较于Maven1,Maven2进行了全面的改进,提供了更快的速度、更简洁的配置以及一系列的新特性。 1. **更快...

    maven3.x学习

    Maven 不仅可以替代传统的构建工具如Ant,而且提供了更丰富的功能和标准化的构建流程。 ### 1. Maven 的主要特点与优势 1. **自动化构建流程**:Maven 提供了一套预定义好的构建生命周期和阶段,如清理、编译、...

    Eclipse插件打包Jar文件fatjar(支持eclipse4.4及以上版本).zip

    这个工具是基于Ant任务实现的,可以与Eclipse的Buildship或Maven等构建工具集成。 要使用fatjar在Eclipse中打包插件,我们需要遵循以下步骤: 1. **安装fatjar插件**:将net.sf.fjep.fatjar_0.0.32.jar添加到...

    使用Maven开发Java Web应用

    传统的构建工具Ant逐渐被Maven和Gradle等更先进的工具取代,尤其是Maven,它提供了强大的依赖管理和项目构建功能。本指南将详细介绍如何在Eclipse环境中使用Maven进行Java Web应用的开发。 一、Maven的优势与基本...

Global site tag (gtag.js) - Google Analytics