有什么好的java make实用程序?

我正在寻找一个用于构建大型java程序的make实用程序。 我已经知道ANT,但想看看还有什么可用。

理想情况下,它应该能够处理.java – > .class包目录怪异,这会破坏GNU Make。

Win32,但跨平台是一个加号。

编辑:我看到使用ANT的一些缺点,这就是为什么我想看到其他选项,尽管我可能最终还是会使用它,只是因为它有效。

  • 需要非常重要的XML makefile,“HelloWorld”已经是25行,而且任何更合理的程序都会很快变大。
    • ant教程显示了ant build.xml文件的比较,这些文件与仅运行所有java命令的大.bat文件大致相同,只是更长。 http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html ,我已经有了其中一个。
    • Xml意味着每个依赖项,变量,目标,规则和项目都有额外的瑕疵,它只会使行难以阅读。 角度支架税
  • 为我解决所有错误的问题。
    • ant使编写jar和javac命令行更容易,生成清单更容易,更容易指定.java源文件,更容易指定jvm / java属性,更容易编写自定义构建工具。
    • ant不会使java类依赖变得更容易,而且似乎没有更强大的变量系统,这两种东西通常都是由make实用程序解决的。

我使用gnu make,但它无法弄清楚包含声明的.java文件的.class文件最终会在哪里。

Ant和Maven绝对是两个标准。 如果您已经熟悉Ant并且想要Maven附带的依赖关系管理,那么您可以看一下Ivy 。

Ant和Maven缺少的一件事是构建脚本中的真正控制结构。 你可以为Ant下载一些提供这种控件的插件,但是(再次,如果你已经熟悉了Ant),你可以看一下Gant ,它是Ant的Groovy包装器。

如果你正在开始一个新项目,你可能想看看maven 。 这有点难,但它为你处理了很多东西,包括依赖。

如果您已经有一个项目要为其创建构建文件,那么除了前面提到的ant之外,我没有任何建议。

忘记ANT !!

如果你问我, Apache Maven就是你的选择。

我最喜欢的function是它内置于依赖管理中。 这意味着您不必将第三方JAR检查到源控件项目中。

您可以在maven POM中指定依赖项(项目对象模型 – 它基本上是项目的XML描述),并且maven会自动下载,编译它们并将它们与您的应用程序打包在一起。

其他非常好的function包括:发布管理和发布发布 – 使用maven控制台命令执行发布。 此function将在源代码管理中标记您的代码库。 签出一份干净的副本,构建它并将其打包以进行部署。 第二个命令会将其上传到您的存储库,以便分发给其他最终用户。

已经使用maven的大型且不断增长的库库 – 每个Apache项目都使用maven。 LOADS也在船上。 亲眼看看,这是主要的回购

能够托管您自己的回购。 – 您可以在哪里发布自己的版本,并上传其他公共回购中不存在的JAR(如大多数SUNjar子)

这不是一个问题的答案。 ANT是构建Java的标准方法。 它适用于Java,那里有无数的Java工具和Cruise Control。 那你为什么要尝试别的呢?

除非你有一个ANT没有覆盖的边缘情况,否则我建议你坚持使用ANT。

当然,我很高兴有一个知识渊博的人指出为什么我的态度是愚蠢的,为什么有一个好的案例来寻找替代品;)

另一种选择是scons,如果你想要一些非常轻巧的东西。 我已经使用了一点,发现它很容易理解,特别是如果你已经知道python语法。 另一种选择是maven ,但无论如何都不简单。 但是,它确实提供了许多其他function,例如帮助管理文档。 我不会把它称为替换品;但是;)

ant多年来一直是领导者。 但是它的build.xml是基于xml的,它非常冗长。 依赖管理可以通过将其与常春藤相结合来实现。

maven努力提供开箱即用的ant + ivy tandem所提供的function,它很有用。 如果它停止这样做,你必须找出它与依赖管理混淆的地方,它很可能是你能想象到的最糟糕的地狱。 它的pom.xml也是用xml编写的。

sbt是皇家scala构建工具,使用ivy进行依赖关系管理,构建文件在scala DSL中编写。 相当成熟,但斯卡拉方言可能不符合你的喜好。

buildr构建文件在ruby中指定。 与maven存储库兼容,并带来自己的依赖关系管理。 Ant集成也在那里。

gradle使用groovy作为其构建文件。 除了maven或常春藤支持之外,它现在拥有它自己的依赖管理器,现在在过去使用常春藤并且不满意。 无缝ant整合。 到目前为止是最简单的语法。

ant,常春藤,maven,buildr是apache项目。


TL; DR

检查gradlebuildr

jmk 。 它是原始的,但是很小,你可以将它嵌入源.tar.gz文件中,几乎不会改变它的大小。

除非Maven最近真的有所改进,否则我会很清楚。 除非你有某种怪物“多项目”,当然还有很多依赖项。

在尝试做最简单的事情(比如FTP一个war文件到服务器)时,看到完全无用且无用的错误后,Maven被扔掉了,而且Ant掉了下来。 从那以后我没有回头。

嗯,显然,有经典的make(make,gmake,nmake)工具,还有(我认为)一些用Ruby编写的构建系统,或者Python。 它们不是Java特定的,而只是可编写脚本的构建系统。

但ANT一直是推动8到9年的领导者,而且从基础知识来看,它很容易上手。

回到白天,编译java会特别糟糕,因为它通常会单独为每个文件调用javac编译器。 ANT并没有受此影响,也许,make可以修改为不这样做。 但它是ANT的一个元素,使它如此受欢迎。 它很快。

我很欣赏ANT可能不是一个完美的解决方案,但它确实很实用。

我从Ant转换为Maven 2并且从此没有回头。 Ant和Maven有两种不同的构建方式。使用Ant,您可以提供有关如何构建内容的说明。 而对于Maven 2,你告诉它你想要建造什么。 如果您有一个现有的Ant构建,xml,您可以通过将其包装在Maven 2 pom.xml中来重构您构建的第一步。

1)如果你有ant的投资,ant+常春藤是相当不错的。 你不必为了依赖性好东西而从ant转移到maven。

2)gant和ant:他们如何比较: http : //java.dzone.com/articles/ant-or-gant-part-1

3) http://www.gradle.org/ – 使用groovy!

BR,
〜一

我喜欢用ant4eclipse使用ant。 这允许我在eclipse中设置依赖关系,在eclipse中进行开发构建和测试,并使用ant进行连续构建。

我一直都在使用ANT。 这是因为我使用Google Web Toolkit(GWT)开发Web应用程序,它还有一个额外的步骤,即将客户端java编译成java脚本。 使用ant,我需要知道的是GWT如何工作,然后我自己编排构建。 有了maven,我必须等到有人写插件。 或者我自己写一个。 有可能出现不遵循通常惯例的其他框架和工具。 我不必一直在寻找maven插件。 有了ant,我可以透明地做任何我想做的事。 我也喜欢写xml文件。 (我必须因为我必须编写几个 – web.xml,application.xml,persistence.xml,SqlMap.xml,dataset.xml等我的观点_ XML是你必须要学习的一件事)