有什么好的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
检查gradle或buildr 。
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是你必须要学习的一件事)