我真的厌倦了一直与 Maven 2 作斗争。构建工具不应该成为障碍。最近我一直在关注Buildr和Gradle。Maven 3 似乎解决了一些问题。那么,我现在该做什么呢?建造者?摇篮?或者等待 Maven 3 一年?

有帮助吗?

解决方案

没有构建系统是魔术子弹。我发现Maven的解决更多的问题比它引起了我,但我很舒适的插件来避开它的缺点,我也处理数百个项目,所以Maven的继承和依赖的处理是非常有帮助我。

浏览SO一点,你会看到Buildr和摇篮双方也有问题(相同的蚂蚁和常春藤),通常你的交易的另一组问题和找到最痛苦的情况。

有没有什么特别的困扰你关于Maven还是一般的痒?如果这是一个特别的问题很值得看 Maven的有关JIRA 的3个问题,如果问题不解决,你可以提高它,否则有可能会小点,在你等待

其他提示

我不希望从Maven的3太大的构建工具Maven的家谱后面的人一直认为,项目的基础假设是同质的,那就是:所有的建设问题,从根本上归结为同样的问题。这种对世界的看法可以在两种相反观点的脸非常一致将保留,但也是有代价的。缺乏在Maven的脚本逻辑的(“当你想脚本,你知道你做错了什么”),繁琐的插件API(“不是普通的Maven用户应该要编写一个插件”)和中央存储库(“我们都具有相同的依赖性“)是这一总体假设所有见证。

在现实世界中构建的问题是异质的,因为人们对各种各样的原因,构建软件。他们都在同时为解决特殊问题“开发”像我们所有的“钻孔”一次。不管你的抽象水平的比较随意的构建问题时,你一定会找到相似之处。正是这些相似的reveration和分歧谴责这是Maven的设计和它为什么吸引了这么多的高射炮的原因垮台。基本上,Maven是专制和乌托邦在其前景。

PS:Maven有良好的特性,如惯例优先的配置和使用存储库的想法(Maven的实施这种思想的是麻烦的)

我们在这里使用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重做一切。

maven 3.x 已经嵌入到 IDE 中 (至少在 Netbeans 上,检查 这个链接 了解更多信息)。今天您可以使用 maven 3.x,只需使用 netbeans 构建 Maven 项目即可。

另一个好消息是,maven 通过在 IDE 项目中集成 EJB/WS 获得了更多“企业”支持(同样,至少在 netbeans 上)。

因此,我会坚持使用 Maven 2.x 进行生产构建,并使用 Maven 3.x 进行开发。

的Maven 2和3具有两个被上各种项目完全为我工作。我目前使用Maven 3的α7,其工作得非常好,特别是在用Eclipse Maven插件结合使用。

的Maven用Ant无缝集成 - 在两个方向上。在我当前的项目,我们从蚂蚁多次以执行复杂的集成测试调用的Maven。同样,我们通过Maven的AntRun插件使用Ant,我们也写了自己的Maven插件。此,顺便说一下,是几分钟的事情并归结为写带注释的POJO。

的Maven得到了很多高射炮,因为许多开发商不喜欢规则或惯例。很简单,没有人强迫你使用Maven。如果你想最终的自由 - 以任何方式 - 重新写你参加每一个项目你自己的构建过程。但是,如果你想创建的软件,而不是重新发明对每个项目定制的构建过程中轮,去Maven的。

请您的代码保持良好,并分解成良好定义的模块和构建系统之间移植变成一个小问题。

至于现在,行家-2是用于项目的中间2 /第三个不错的选择。对于非常简单,蚂蚁仍然是确定。对于非常复杂的,行家-2和其他工具(如antrun)的混合成为必然。

不知道为什么你有与Maven的2个问题。

它不同于蚂蚁和buildr在于它是用于描述你的构建过程,而不是它脚本的工具。复杂的构建,具有多重动态部分和嵌套和/或短暂的依赖关系的人是很难建立,因为他们很难形容。

提供格子 https://github.com/hackingspirit/Lattice 一试。我是作家。这里是瓢:

在格建立文件写入不是XML,但在Python语言。该苯并efits是更好的可读性和被Python支持的强大势在必行构建脚本。 对于多模块项目。莱迪思使用拓扑排序来决定正确的顺序构建每个模块。它也计划莱迪思将分析模块依赖以确定模块编译如何可以并行。 晶格的源代码是极其稀薄,目前它由约500的Python源代码行。

我认为人们抱怨的Maven应该花一点时间研究可用的插件。在回应评论抱怨Maven是刚性的,使得它很难使用自定义生成逻辑/提供对构建过程进行细粒度的控制 - 我会建议寻找到Ant的插件,Maven的(实际上有好几个,但这里是一个: http://maven.apache.org/plugins/maven-antrun-plugin)。我已经取得了巨大的成功定制的Maven用它建立在过去几年。基本上,它允许你作为Maven构建的一部分运行任何Ant命令,你可以做蚂蚁几乎任何东西;)

蚂蚁与艾维做同样依赖管理Maven的呢(其实,它使用Maven的整体依赖管理基础设施,包括相同的URL库),但没有所有的POM配置混乱。

蚂蚁与艾维可能是操作的依赖问题对谁真的不想使用Maven的人的一种方式。它解决了90%的Maven在被假设为解决东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top