我看到我办公室的很多地方ant tasks
都习惯于将文件从一个地方移动到另一个地方,并且还对这些文件执行一些任务。但是所有这些都可以通过shell scripts
.
我的问题是,
在什么情况下ant
优先于shell scripts
?
ant
使用over ashell scripts
来执行相同的任务集有什么好处。
一个优点ant
是它适用于所有平台,除此之外还有其他performance
相关的优点吗?
我看到我办公室的很多地方ant tasks
都习惯于将文件从一个地方移动到另一个地方,并且还对这些文件执行一些任务。但是所有这些都可以通过shell scripts
.
我的问题是,
在什么情况下ant
优先于shell scripts
?
ant
使用over ashell scripts
来执行相同的任务集有什么好处。
一个优点ant
是它适用于所有平台,除此之外还有其他performance
相关的优点吗?
关于为什么应该首选 ANT 而不是 shell 脚本,您的问题有两个:
真的没有性能优势。Java 的命令行使用速度很慢。
但是.....我建议不要玩“性能”卡。让我们假设您的应用程序不支持 Windows(考虑到 Java 应用程序应该支持所有平台,这很奇怪......):我已经看到 shell 脚本驱动的部署陷入混乱,试图协调不同的 unix 操作系统命令的各种工作方式。“tar”、“awk”等命令可能略有不同,这会导致脚本中出现额外的平台支持逻辑。
总之,我不会使用任何一个。我选择使用groovy进行一般脚本编写的混合方法。它是一种基于 java 的脚本语言,并嵌入了 ANT 的全部功能。作为基于 java 的脚本语言意味着它可以在所有平台上运行。为了公平起见,还应注意还有其他语言选择。Ruby 当然值得一提,因为它催生了一组非常值得评估的配置管理技术。(见厨师和木偶)
实际上,它归结为 Windows 支持。如果您在 Unix 商店并且不想向开发人员介绍新东西,那么我已经成功使用了两种替代方法:
带有 Git Bash 的普通旧 shell 脚本。Git Bash 带有 Git Windows 发行版 ( http://git-scm.com/ )。如果你在做自动化,你可以像这样启动 shell 脚本: "C:\Program Files (x86)\Git\bin\sh.exe" --login -i -- ./BUILD
节点脚本。同样,它是一个简单的安装程序,它是 javascript,您可以使用 ShellJS ( https://github.com/arturadib/shelljs ) 之类的东西来非常接近 Unix shell 脚本/Makefiles。