我认为这个问题是一个扩展比较的IDE for Java中,我们还需要蚂蚁?
有以上问题的答案,但我想知道使用Maven或蚂蚁经过短短的Eclipse的一个具体的例子。
当我在Eclipse开发,Eclipse一样,一切对我来说,我只需要点击运行按钮。 而且,Eclipse可以让你的代码导出到一个可运行的罐子,甚至.EXE的窗口。
所以,我真的不知道为什么我需要的Maven或蚂蚁。
而且,如果我确实需要, 哪一个应该我选择,Maven的蚂蚁还是?
我认为这个问题是一个扩展比较的IDE for Java中,我们还需要蚂蚁?
有以上问题的答案,但我想知道使用Maven或蚂蚁经过短短的Eclipse的一个具体的例子。
当我在Eclipse开发,Eclipse一样,一切对我来说,我只需要点击运行按钮。 而且,Eclipse可以让你的代码导出到一个可运行的罐子,甚至.EXE的窗口。
所以,我真的不知道为什么我需要的Maven或蚂蚁。
而且,如果我确实需要, 哪一个应该我选择,Maven的蚂蚁还是?
Eclipse是一个开发环境。 但它不是一个构建工具。
我个人讨厌Maven的,但情况因人而异。 有很多选择:gradle这个,buildr等。
Maven的令我的一帮过去,他们的销售,按日期的C-shell脚本小子是谁认为Autoconf是一个前沿代码的自动化和不明白,目标代码编写的东西的情况下, 需要对象的环境是在任何方式无论是开发或部署效率。 蚂蚁已经够糟糕了,但Maven的结合蚂蚁和常春藤的所有最坏的特点。 它不创建一个对象的环境,它不与做工具,发挥出色。
简单地说,一个对象环境应该具有的所有类对象,即确定可用于系统,实时和随时可用的对象类型的对象。 从那里,我可以做我想做的事情,实例化一个类的多个对象,设置各种序列和实例化规则,等等。由于环境应该是完全活,我不应该需要在所有构建工具。 在部署我的应用程序而言,它不是困难的环境,简单地扔掉那些永远不会被代码组成我的应用程序的命名空间中引用的所有类的对象。 在JVM的垃圾收集今天这样的飞行几乎同样的事情。 在这一点上我已经作出了我的对象和所有对象(主要是类对象),我的对象引用,即我的应用程序和所有依赖的部署环境。 这是虚拟机是如何工作的。 (我们的虚拟机是如此写得不好,我们需要在Java虚拟机在Linux虚拟机上的VMware虚拟机上的其他Linux虚拟机上运行一个虚拟机春季是软件开发的白痴的另一个例子)。 当依赖性得到更新,这是很简单的环境促使开发商给他的旧代码合并到新的库,使用新的库到旧版本将这些代码合并,或保留两个版本。 提示鼓励开发者做出有时需要避免具有24个版本的每个库的轻微的修改,而像Maven的工具隐藏你有20个版本,并导致在Java应用程序中常见的大规模运行膨胀的事实。
在Java的发展空间,Eclipse附带最接近于正确的对象的环境,虽然理所当然有很多是打破范式以各种方式插件。 大多数的使用严格审查的时候Maven的分崩离析的理由。
Netbeans和理念被夸大了的文本编辑器,不反对的环境,但如果你想用自己的工具,不包括成千上万的Eclipse插件的东西,都可以导入和维护Eclipse项目,您的构建也只是极为缓慢相比,开发人员使用Eclipse,但随后,他们会很慢,如果他们是纯粹的Netbeans或理念的项目呢。
不是一个严重的理由使用Maven。
出口/ Eclipse中导入设置的(这是每一个团队应该在任何情况下,任何IDE做)的难易程度,使不同的设置问题,无非是开发团队的一部分懒惰以上(或超过空格VS标签,宗教的说法笑) 。
再次,不是一个很重要的理由使用Maven。
团队环境中? 告诉我,已经不使用像GIT或SVN仓库里的球队。 为什么我们需要通过建立的Nexus回购以及重复两种功能性和维护性头痛?
这一个实际上是一个很好的理由不使用Maven。
运行服务器构建? 伟大的想法,现在,应该不是被这实际上是在检查源回购而不是恰好被推到的Nexus一个随机生成的代码拉开序幕? 这带来了对Git的,特别是Git的使用Maven的一个点。 由于Git中我没有在分组工作,本地测试,然后提交(部分原因是因为我的本地测试并不能证明该服务器构建工作由于在詹金斯和Eclipse Maven配置差异)我要提交我的修改为了不同的分支,查看服务器Maven构建失败,然后提交的进一步改变来解决这个问题,从而在回购不可读源的历史。 经过在代码应该至少是建立和传递单元测试,其中,如果GIT中和Maven出炉应保证的图片。
出口从Eclipse的一个无头的构建是微不足道的,如果你真的看进去 - 你需要的是蚂蚁或摇篮,已经由Eclipse的维护的开发版本,和一些Eclipse的罐子(Eclipse将导出所有必需的文件无头构建到目录或zip文件,或将它们FTP到构建服务器)。 服务器构建工具,如哈得逊/詹金斯可以从最源头回购拉更新的代码和调用任何构建脚本,有Maven的没有依赖性。 与Maven你要么迫使开发商使用不适合任何人的工具,而是建设工程(长幅度才能建立,即使使用M2E,足够,不能进行这种情况下),或者你住在一起的可能性,服务器版本不很喜欢的工作站版本,如果你通过使用插件M2E的大量整合二者的所有麻烦这仍然是真正的工作。 无论哪种方式,你会得到一个更慢和更脆弱工作站建立一个同样缓慢和更加脆弱服务器构建的缘故。 在每一个基于Maven的项目,我已经工作在我见过的瞬态哈德森/詹金斯的错误,不Eclipse中显示,除非你有绝对安装每一个可能的M2E插件并正确配置,大多数开发商不会做。
好像另一个重要原因,以避免Maven的。
这并不包括一些与Maven的更基本的问题,比如它的命名空间打破Java的命名空间和XML命名空间,它的建设单位(聚甲醛),具有在实际部署环境没有关系的东西(想想吧,当你分开?通过的POM你有什么实际完成的成品没有全部完成它是一种虚假的安全感,你已经分离问题和功能集成到所有运行作为一个整体的代码)不同的共建单位; 手动维护复杂的配置文件,这些文件只得到,如果你碰巧需要使用的OSGi或其他容器中,必须保持影响和Maven的配置很少,明显感觉到它的影响的其他配置文件更糟糕的麻烦; 造成试图而不考虑代码来执行在一个完整的环境中运行单元测试的问题; 无数的版本不仅依赖但具体的Maven插件(其实我已经见过地狱JAR在Maven在多个Maven插件是使用依赖性冲突而建立本身 -的Maven的是应该解决的问题之一。
是的,你可以使用Maven构建目标代码。 你也可以写纯对象代码的C或甚至汇编,但我不知道为什么你会想。
避免Maven的最好的理由是工作的,当你生病的上面提到的所有问题(和许多其他未提及的)脱mavenize一组项目所需的数量惊人。
心态,从C开发继承,即开发周期由写代码,编译,汇编,构建,部署,测试,重新来过,是物体在环境中完全过时。 在某些时候,我们需要告诉所有这种心态,他们需要重新学习如何开发,期间的人。 这样做将消除任何需要的Maven,Git的,和那做什么,但浪费时间等工具的主机。
对象的发展应该在活动对象的环境中,因为它被保存,因为修改的对象是活的代码变化进行测试来完成。 部署应包括从环境中删除仅发展文物,创建具有在开发和测试运行的应用程序都使用一个运行时。
我目前正在处理由使用Maven的组装插件一个OSGi应用程序创建部署组件的一个问题。 该应用程序完全在Eclipse环境中,其热部署的所有代码更改到环境中运行的OSGi容器。 但是配置不尽管有一个非常不错的配置/构建工程师,其唯一的工作就是完成这一过程生存通过Maven的组装过程的完整。 如果我们摆脱的Maven(现在很难由于代码量,但是可能),以及所使用的BNDTOOLS Eclipse插件,我们可以简单地导出Eclipse构建为一个Ant或摇篮无头版本(注,OSGi的开发谁写BND和BNDTOOLS 不支持Maven的,有很好的理由,该Maven插件是由自己使用NetBeans和Maven,并没有现场环境以外的部署周期结束谁菲利克斯开发人员),其中两个工具设置相同的写环境Eclipse的,没有那些只是针对开发商反正GUI对象。 其结果将是相同的配置和构建部署。 这很容易保存,每天2-3个小时的当前花在看慢的Maven或M2E建立开发者,并释放配置/建造工程师做应用程序的更多的测试上部署主机。
获得过写/编译/安装/构建/部署/测试的心态是唯一的主要障碍。 假装你是一个编码1979年VT100终端,而不是一个现代的机器上不会让你一个“真实”的开发商,它只是表明你的方法在35年以后日期的。
在团队开发的,没有其他人了解正确的实时对象的环境如Eclipse,足以让它与M2E和OSGi的现场环境中工作,他们都是顶级开发者,他们只是还没有接触到它应有以过时的命令行开发工具的流行。 他们只知道,原来是可以这样做的时候,我们是结对编程解决配置问题和我分享我的画面,引起了其他团队成员之一惊呼“ 这就是你写的代码,以便该死的快”,当他看到我的代码变化的背景OSGi容器立即测试本身。 我可以使用bash shell的时候我必须这样做,比如当我在看日志的远程服务器上,其实我这样做是相当有效的精确,所以我可以尽快摆脱这种环境,回归到21世纪。
有洙许多优点,使用Ant或Maven。
Maven是或多或少蚂蚁的更新概念。 而不是给你一颗子弹点答案,我决定采取另一种方法为回答这个问题。 我会问你一个简单的问题。 我'假设在这里,你将是一个开发者; 或有某种OO编程背景。
所以,如果你的经理问你复制200名的目录,而忽略jar, war and ear
这些目录内的文件和复制一次。 然后,您部署这些200节目录到另一个目的地,但只部署.class
文件; 复制文件的其余部分到另一个目的地等。
为你做这在Java中; 这将是大量的逻辑,大量的代码,并不会扩展或适应变化。 因此,考虑到这一点Ant或Maven将完成和更少的开销准备这一切都在飞行中为您的应用程序使用。 蚂蚁或Maven代码的大小将是1/4
比较去渣。
点击更多技术优势的环节:
Maven的
蚂蚁我找不到同惠正宗的答案,但我敢肯定,这将说服你;)
Maven和Ant的用于脚本构建,使他们可在批作业像詹金斯或在命令行上执行。
事实上Eclipse本身使用Ant广泛构建插件。
如果你要学习两者之一,学习Maven的,这是一个几乎每个人都使用这些天(更换蚂蚁)。
行家通常用于构建插件或罐子用于特定应用。
假设你已经开发了一个应用程序,但你不想去添加用于手动该应用程序的罐子。 在这种情况下Maven的蚂蚁或者是非常有帮助的。 一旦你写你的代码,只需要运行方式 - > Maven构建(点击Maven构建),它会产生所有需要的插件或罐子,并在您的应用程序库的构建路径。 一个疑问可能会喜欢的应用程序将如何得到这些罐子,对于每个应用程序有一名为pom.xml的XML文件,所有的罐子引用保持在那里下载的目的。