Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant仍然是Java构建工具的最佳选择吗?_Java_Ant_Build_Build Management - Fatal编程技术网

Ant仍然是Java构建工具的最佳选择吗?

Ant仍然是Java构建工具的最佳选择吗?,java,ant,build,build-management,Java,Ant,Build,Build Management,根据我的少量经验,我只将Ant用作构建工具。还有其他更好的项目吗?为什么? 它比ant好得多,因为对于大多数常见的任务,您不必编写复杂的build.xml,maven有非常好的默认值,并且它完全是基于配置的约定 它还有一个大型的中央库,可以很容易地将其配置为“使用最新的稳定的公共资源”。Maven随后将为您下载最新的稳定版本(不再将JAR签入VCS),如果发布了新的上游稳定版本,它也将下载它。当然,如果您需要的话,也可以很容易地将其锁定到某个特定的版本 它还与Netbeans和Eclipse(m

根据我的少量经验,我只将Ant用作构建工具。还有其他更好的项目吗?为什么?

它比ant好得多,因为对于大多数常见的任务,您不必编写复杂的build.xml,maven有非常好的默认值,并且它完全是基于配置的约定

它还有一个大型的中央库,可以很容易地将其配置为“使用最新的稳定的公共资源”。Maven随后将为您下载最新的稳定版本(不再将JAR签入VCS),如果发布了新的上游稳定版本,它也将下载它。当然,如果您需要的话,也可以很容易地将其锁定到某个特定的版本

它还与Netbeans和Eclipse(m2eclipse插件)进行了很好的集成,因此IDE尊重您在pom.xml文件中声明的任何设置(包括依赖项)

maven也有一些缺点:一些插件的文档记录很差,与这两个IDE的集成不是很完美,而且在不同的方面,一些错误消息可能很难理解。

有些人喜欢,这是Ant的依赖管理功能,所以我想来自Ant背景的人会喜欢它

其他人喜欢。这是一个JRuby的东西,所以如果你能在同一个项目中处理Ruby和Java,那么我想这会很有趣


就我个人而言,我只是使用。创建一个默认的pom.xml文件并使用所有构建命令是很容易的。随着项目的发展,您已经具备了运行插件和添加依赖项的基础设施。

在考虑合适的工具时,我敦促您从需求开始。每个项目都是不同的,你使用的工具应该反映问题空间而不是时尚

尽管如此,我认为对于一般用途,ant可能仍然是构建java应用程序的最佳通用工具。它通常与其他依赖关系管理工具一起有效地使用,但在这里,我们又可以顺利地找到解决方案

非常好的消息是,如果您的流程很好,那么切换构建工具是一个相当轻松的流程-第一课-从一个适合当前问题的好流程开始。

我非常喜欢,这是一个构建工具,其配置文件都只是Python脚本。这将吸引任何了解Python或类似脚本语言的人。SCons的设计可以很好地与Java、C/C++和其他语言配合使用,过去我对它非常满意


因为SCons文件是用Python编写的,所以如果您发现自己需要做任何特殊的事情,您可以编写任意Python代码。然而,如果您对Python完全不熟悉,那么可能会有比尝试扩展Ant或类似的东西来做您想做的事情更高的学习曲线。

Maven2似乎是一种新兴事物

然而,对于我们的项目,只要可行,我们都将迁移回ant

Maven2需要相当多的知识才能以您想要的方式获得它,Maven2版本似乎以不同的方式处理类路径

检查依赖项的依赖项中包含的所有许可证是一件痛苦的事情,这些依赖项可能会被引入

而且可能会有一个较慢的启动时间,因为您需要自己找出依赖关系,但至少它很容易阅读。这里没有魔法:)

如果您确实使用maven,请考虑使用Nexus这样的内部存储库。这样,如果一些库决定离开网络,您的软件就不会死*


*我们被maven1烧伤了;ibiblio maven1存储库重定向,而maven1不支持重定向:(

您将在中找到一些答案。

Ant仍然是一个主要的参与者。根据我的经验,它占主导地位。另外,有了Ivy,它处理了Maven的一些优势。在我看来,Ant将成为其他工具的框架:XML太僵化了(请参见下面的链接)

Maven 2也是一个重要的玩家。我知道有些人非常喜欢它,并且对Maven 1的批评感到愤怒(这已经走了很长的路)

Groovy在构建空间中提供了一些很酷的东西,因为它们是在Ant上构建的。Grails中使用了Gant,但也可以包含在Gradle中。Java也可以使用Gant


冒着给我自己的博客“关于甘特和格雷德尔”拉皮条的风险。这里有一个关于他们未来的链接。

在企业中,ant仍然是牢不可破的角色。依赖关系不会很快改变。与不断转向最新版本的依赖JAR的开源项目不同,大多数企业都尽量不改变它们的依赖关系t、 有鉴于此,maven的优势与ant相比并不算多

同样,如果您想要maven的一些特性,ant人员会使用ivy()作为依赖项特性

如果您想继续使用ant,请掌握第二版“ant IN ACTION”,这样您就可以使用ant达到最佳效率


祝你好运,

你也有。Gant是Groovy+Ant,你可以用普通的Groovy编写你的任务,你也可以调用任何Ant任务。如果你是一家Java商店,想重用你拥有的Ant技能,但不喜欢XML,我推荐Gant,它非常容易安装,你可以将它嵌入到Ant中(也可以从Ant中调用Gant).

Buildr的另一个发展方向是基于Groovy的gant。它包括Ivy。我认为像Rake、Buildr和gant这样的构建工具是未来的发展方向,因为XML从来都不是一种很好的语言基础(尽管它适用于分层数据结构,在这种结构中,您希望简化解析器的编写).你认为maven更像是一个项目定义,从而创建了build vs.ant,这让你自己做的工作处于一个较低的水平吗?有点像C vs.assembly language,但不那么极端?可以这样认为,是的。但对我来说重要的是,maven与IDE插件一起,是一个更好的构建工具,这就是那,如果是的话