不久之前,我已经深入研究了Ant并使用它进行简单的实践(编译、单元测试、打包)。现在我平时的工作都是在Eclipse下进行java开发,平时的工作都可以通过Eclipse的功能简单的完成:实时编译,点击按钮部署,各种向导…
所以我想知道在Eclipse下我们是否需要Ant。如果是的话,我们应该在哪个方面使用Ant和Eclipse。
构建应用程序不仅仅是在您的IDE中构建它们。您需要设置一个可以运行的自动构建和部署方法,例如,持续集成和部署。构建的包必须部署到各种环境并最终投入生产。你不能在自己的盒子里建造它们。您不能在IDE中构建它。你需要独立的构建系统。这就是像ANT这样的构建工具的用武之地。
还要注意,ide用于构建和部署的能力是有限的,这不是它们的优势。但是,可以使用ANT及其构建脚本并在eclipse中运行它们。这样,您就拥有了本地(开发人员)构建和主构建过程的一组脚本。由于ANT是基于JAVA的,您还可以通过编写自定义任务等来适合您的构建工具。
另外,当你在构建系统中使用像ANT这样标准的东西时,你可以转移到像Intellij IDEA这样的不同IDE,并且仍然使用你所知道的构建系统。
如果可以通过IDE构建,还需要Ant吗?当然不是!你可以自己看。
您是否仍然应该使用标准工具独立于IDE构建?当然!
注意我没有说Ant。有很多构建工具,比如Maven或Gradle,都是用来构建Java程序的。但是,您需要一个独立于IDE的构建系统是有原因的:
- 你有一个持续集成服务器:你确实有一个。对吧?如果你没有得到一个。每次向版本控制系统提交变更时,持续集成服务器都会自动构建项目(并运行每个测试)。它能捕捉错误。它还提供了一个官方BUILD。没有更多的它在我的机器上工作!借口。如果持续集成服务器不能构建它并成功运行测试,则说明该软件不好。
- 您有其他人需要在不同环境的不同计算机上使用您的项目: ide的问题是它特定于您的系统。其他人签出您的项目,他们可能使用不同的IDE。它们的设置可能略有不同。像Ant这样独立的构建脚本语言可以保证它们可以按预期重建您的项目。
如果您与其他人共享一个项目,您需要一个独立的标准方法来构建该项目,并确切地知道该构建工作所需的内容。ide可以隐藏这些信息。
我是一个每天使用Ant的基准测试员。我们的环境有7台测试机器和1台控制台机器。对于每次测试运行,ant脚本都会更新工作副本,重新启动数据库,使用适当的属性构建产品和Grinder,并将它们部署到机器上,然后启动它们和监控软件。有了这个包含1000行代码的构建文件,我可以在控制台机器的终端上输入类似"ant A B C D E"的行。我认为在eclipse或NetBeans或其他IDE中这样做不是一个好主意。
而且,在我公司的产品中,蚂蚁被广泛使用。我们使用ant构建基准测试的样本数据;我们使用ant来更新Tomcat,它将与我们的产品捆绑在一起;我们还使用ant来构建和运行selenium测试。
更重要的是,当您想要发布源代码时,包含IDE项目文件并不是一个好主意,因为有很多IDE。如果用户只是想从您最新的代码中获得一个新的构建版本(如果您不提供夜间构建),该怎么办?提供一组ant(或其他构建工具)构建文件是个好主意。这样,您就可以管理构建的类路径。
最简短的回答就是灵活性。ide可能带有预定义的功能,甚至可能允许您使用向导选择一些选项。这就像用Dreamweaver或类似的工具生成html一样。它永远不会像纯物质那样灵活。例如,NetBeans在底层使用Ant。
引自:Netbeans: Build Tools
默认NetBeans IDE项目系统直接构建在Ant构建系统。所有的项目命令,如"Build"Project"one_answers"在调试器中运行文件",在项目的Ant中调用目标脚本。因此,您可以在IDE之外构建和运行项目与在IDE中构建和运行时完全一样。
即使在你使用了工具之后,你很可能仍然需要复习。因此,我要说的是,ide为您所做的只是纯ant或maven(如果您使用它)所能做的事情的一个子集。对于像编译和运行这样的简单任务,ide做得非常好!但是,如果您有一个像在CI上部署那样复杂的用例,那么它将无法帮助您。您需要构建工具的全部灵活性。