我真的累了与Maven 2所有的时间挣扎。 构建工具不应该在路上。 最近我一直在看Buildr和摇篮。 Maven的3似乎修复一些斗争。 所以,我应该怎么去了吗? Buildr? 摇篮? 或等待一年的Maven 3?
Answer 1:
没有生成系统是魔术子弹。 我发现Maven的解决更多的问题比它导致我,但我很舒适的插件来避开它的缺点,我也处理数百个项目,所以Maven的继承和依赖的处理对我来说是非常有帮助的。
浏览SO一点,你会看到Buildr和摇篮双方也有问题(相同的蚂蚁和常春藤),通常你的交易一组问题,另一个和它找到最痛苦的情况。
有没有什么特别的困扰你关于Maven还是一般的痒? 如果是很值得期待的一个具体问题上吉拉Maven的3个问题 ,如果这个问题不解决,就可以提高它,否则有可能会小点,在你等待
Answer 2:
我不希望从Maven的3太大的构建工具Maven的家谱后面的人一直认为,项目的基础假设是同质的,那就是:所有的建设问题,从根本上归结为同样的问题。 这种对世界的看法可以在两种相反观点的脸非常一致将保留,但也是有代价的。 缺乏在Maven的脚本逻辑的(“当你想脚本,你知道你做错了什么”),繁琐的插件API(“不是普通的Maven用户应该要编写一个插件”)和中央存储库(“我们都具有相同的依赖关系“)是这一总体假设所有见证。
在现实世界中构建的问题是异质的,因为人们对各种各样的原因,构建软件。 他们都在同时为解决特殊问题“开发”像我们所有的“钻孔”一次。 不管你的抽象水平的比较随意的构建问题时,你一定会找到相似之处。 正是这些相似的reveration和分歧谴责这是Maven的设计和它为什么吸引了这么多的高射炮的原因垮台。 基本上,Maven是专制和乌托邦在其前景。
PS:Maven有很好的功能,像约定优于配置和使用存储库(Maven的实现这个想法的是麻烦)的想法。
Answer 3:
在这里,我们使用Maven,但我发现,一旦你得到一个简单的项目之外,pom.xml中开始变得越来越复杂。 你开始花大量的时间去解决如何在赫克配置您的POM做你想要什么,以及如何解决的各种问题。
这真的让我的事情是,我们正在构建的耳朵。 我们必须以EAR文件多的战争,和Maven通常坚持在战争中的库。 然而,为了减少战争的规模,并保持罐子都是一样的,我们希望把在EAR的lib目录下的战争之间共享的罐子。
不幸的是,Maven的不处理这个非常好。 我们需要手工配置每个战争多金属氧酸盐,然后添加所有这些依赖于耳的POM。
在另一个项目中,我们有一个基于HTML帮助文件。 谁写的帮助的人写他们在Microsoft Word中,然后使用一个程序将其转化成HTML。 单个字符的变化可以在整个上百个文件回荡。
为了解决这个问题,我们的帮助系统储存在我们的源代码库作为一个单一的压缩文件。 当我们的文档团队创建了一套新的帮助文件,它们压缩它,取代的是在库中。
所以,我的身材部分解压缩该文件并把它放在了战争。 易在蚂蚁做,除非你使用Antrun插件,它允许你写的Ant代码来处理Maven在不能没有完全成熟的插件处理问题不能做到这一点在Maven的。
我可以看到Maven是干什么的,但理论得到了提前的现实。 我发现的是,Ivy和Ant可以完成大部分依赖检查Maven的确实没有写的所有问题和维护劲歌。
如果你还没有使用Maven,第一次尝试蚂蚁常春藤。 然后,当时,Maven 3出来,试试。 我记得从Maven的1至2 Maven的过渡它们是相互不兼容的全部,你学到了什么使用Maven 1已经过时。 这将是愚蠢的学习和重做你的项目的Maven 2突然发现自己重做一切对Maven 3。
Answer 4:
行家3.x中已经嵌入在集成开发环境 (至少在NetBeans中,检查该链接以获取更多infomration)。 你可以玩今天与Maven 3.X简单地构建与NetBeans Maven项目。
另一个好消息是,行家得到了更多的'企业的支持与IDE项目(至少NetBeans上再次)整合EJB / WS。
所以我会坚持生产构建到Maven 2.x和使用Maven 3.X发展发挥。
Answer 5:
Maven的2和3均出现了对各种项目完全为我工作。 我目前使用Maven 3阿尔法7,它工作得非常好,尤其是在Eclipse的Maven插件相结合。
Maven的使用Ant无缝集成 - 在两个方向上。 在我当前的项目,我们从蚂蚁多次以执行复杂的集成测试调用的Maven。 同样,我们通过Maven的AntRun插件使用Ant,我们也写了自己的Maven插件。 这,顺便说一句,是几分钟的事,并归结为写一个注解的POJO。
Maven的得到了很多高射炮的,因为许多开发商不喜欢规则或惯例。 很简单,没有人强迫你使用Maven。 如果你想最终的自由 - 以任何方式 - 重新写你参加每一个项目你自己的构建过程。 但是,如果你想创建的软件,而不是重新发明了定制的构建过程中车轮上的每一个项目,去Maven的。
Answer 6:
保持你的代码保持良好,并分解成定义良好的模块和内部系统之间移植成为一个小问题。
至于现在,行家-2是项目的中间2/3是不错的选择。 对于非常简单,蚂蚁仍然是确定。 对于非常复杂的,行家-2和其他工具(如antrun)的混合成为必然。
不知道为什么你使用Maven-2的问题。
它不同于蚂蚁和buildr,它是用于描述您的构建过程,而不是脚本它的工具。 复杂的构建,具有多重动态部分和嵌套和/或短暂的依赖关系的人是很难建立,因为他们很难形容。
Answer 7:
给格https://github.com/hackingspirit/Lattice一试。 我是作家。 这里是瓢:
在格建立文件是在XML编写的,而是用Python语言。 该苯并efits是更好的可读性和被Python支持的强大势在必行构建脚本。 对于多模块项目。 莱迪思使用拓扑排序来决定正确的顺序构建每个模块。 它也计划莱迪思将分析模块依赖以确定模块编译如何可以并行。 莱迪思的源代码是非常瘦,目前它由大约500的Python源代码行。
Answer 8:
我认为人们抱怨的Maven应该花一点时间研究可用的插件。 在回应评论抱怨Maven是刚性的,使得它很难使用自定义生成逻辑/提供对构建过程进行细粒度的控制 - 我会建议寻找到Ant的插件,Maven的(实际上有好几个,但这里是一个: http://maven.apache.org/plugins/maven-antrun-plugin )。 我已经取得了巨大的成功定制的Maven用它建立在过去几年。 基本上,它允许你作为Maven构建的一部分运行任何Ant命令,你可以做蚂蚁几乎任何东西;)
Answer 9:
蚂蚁与艾维做同样依赖管理Maven的呢(其实,它使用Maven的,包括相同的URL库全依赖管理基础设施),但没有所有的POM的配置混乱。
蚂蚁有常春藤可能是操作的依赖问题对谁真的不想使用Maven的人的一种方式。 它解决了90%的Maven同时是假设解决的东西。