什么是构建自动化软件(例如,Ant)?

我看到很多ant的参考,但我没有完全明白它的意义呢? 从我听说它应该编译你的项目,但我不能通过单击运行 – >在eclipse中运行来做到这一点?

编辑:我想我应该改述我的问题。 我已经知道ant是一个“构建自动化软件”,我的问题是,构建自动化究竟是什么? 我认为你应该测试你的应用程序,当它运行时你点击eclipse中的’build’按钮或通过命令行java,它会生成一个.jar文件? 那么为什么你需要“自动化”这个过程呢?

我已经知道ant是一个“构建自动化软件”,我的问题是,构建自动化究竟是什么? 我认为你应该测试你的应用程序,当它运行时你点击eclipse中的’build’按钮或通过命令行java,它会生成一个.jar文件? 那么为什么你需要“自动化”这个过程呢?

并非所有Java开发都是通过eclipse完成的,并非所有jar都可以从命令行构建(或者应该从命令行构建)。

您可能还需要运行测试用例,unit testing以及许多其他过程。

什么ant提供了一种机制来自动完成所有这些工作(所以你不必每次都这样做),也许你可以每天下午6点调用这个ant脚本。

例如,在某些项目中,需要每日构建,以下是可以使用ant自动执行的任务,因此它们可以在没有人为干预的情况下运行。

  • 连接到subversion服务器。
  • 使用最新版本下载/更新
  • 编译应用程序
  • 运行测试用例
  • 包装应用程序(在jar子里,战争,耳朵或其他)
  • 将此构建二进制文件提交给subversion。
  • 在远程服务器中安装应用程序
  • 重启服务器
  • 发送包含作业摘要的电子邮件。

当然对于其他项目来说这是矫枉过正,但对其他一些项目来说非常有帮助。

rogeriopvl是绝对正确的,但回答你的问题“我不能通过点击Run->在Eclipse中运行来做到这一点吗?” 问题:这对于您自己开发的项目来说很好,并且在多个环境中不需要可重复的,可编写脚本的构建。

但是,如果您正在开发一个开源项目,或者需要能够在构建服务器上构建的专业软件等,那么需要运行特定的IDE并不是一个好主意。

Ant用于自动化构建过程,但构建过程通常不仅仅是编译过程。 Ant具有“任务”,可用于执行各种有用的function。 你可以通过编写一个java类并告诉ant在哪里找到它来创建你自己的任务来做任何事情。 然后,您可以混合并匹配这些任务,以创建将执行一组任务的目标。

您还可以设置动态环境来构建应用程序。 您可以设置属性文件以保存可在构建过程中使用的变量,即保存文件路径,类路径等。这有助于区分部署路径,数据库实例等的测试和生产构建。可能会改变。 Ant还包括流量控制(如果等)

我见过ant的一些事情:

  • 编译代码
  • 使用版本控制来签出最新版本或标记正在构建的版本
  • 运行sql脚本以构建或重建测试数据库
  • 从外部资源复制文件以包含在项目中
  • 将代码捆绑到jar,war或ear文件中
  • 将Web应用程序部署到应用程序服务器
  • 重启应用服务器
  • 执行测试套件
  • 静态分析,即CheckStyle或PMD
  • 向团队发送电子邮件以提醒他们构建。
  • 根据构建中的信息生成文件。
    • 示例:我的应用程序中有一个jsp,它只显示版本/构建信息。 它在我运行构建时由ant生成,生产操作团队在部署应用程序时检查此页面以确保它们已部署正确的构建。

在许多大公司(可能还有一些较小的公司)中,您会发现生产代码不是由开发它的人构建的 。 相反,开发人员可以将他们的代码检查到源代码存储库并标记它。 然后他们将此标记提供给构建团队。

构建团队在一个单独的(干净的)区域 – 可能在某个无头服务器上(即没有GUI) – 然后检查代码并运行构建脚本。 构建脚本将完全独立于桌面环境/ IDE

这可以确保任何一个开发人员的计算机上没有任何东西“污染”构建。 (或者,更有可能的是,系统无需任何外部源控制!)

因此,您使用的大多数软件永远不会从开发人员的桌面构建。

PS。 您可能还想看看持续集成的想法

简而言之,Ant是一种创建完整项目构建的好方法,它独立于任何开发人员可能使用的任何特定工具。 如果没有独立的构建,事情就会很快变得混乱 – 特别是对于大型项目团队而言。

现在,对于长期的答案……我被带入了几个项目而没有任何独立构建的感觉。 在一个项目中,有一个人不是开发人员,负责构建和部署软件。 他创建了147个单独的Windows批处理文件来编译每个EJB,每个servlet和每个客户端组件。 没有错误检查此版本。 所有日志消息(包括错误消息)都标准化了。 他可以通过读取此日志来手动识别打印的exception或消息是正常的,哪条消息是错误的。 他还必须部署他刚刚构建的这个软件。 由于存在多个负载平衡层,因此部署同样复杂。 每个模块都必须手动放置在正确的位置,并设置选项以匹配下游和上游层。 使用此方法构建和部署此软件至少需要3天时间。 当然,只有这样才能确定构建是否“有效”。 通常,在此期间之后,所有程序员都会争先恐后地调试构建。 程序员会说我的模块在我的IDE中工作正常。 我只是点击这样运行,看到了吗?

实际上,各个软件模块通常都有效,但构建和部署非常无效。 同样糟糕的是,任何人都可以将构建部署到多个环境同样困难。 管理层会说,好的,你现在可以在我们的回归测试环境中使用这个版本。 现在在这个其他环境中部署相同的构建,以便销售人员可以演示和发布软件。 这应该很简单,但它也需要至少2天,然后是“调试构建”期间。 构建和部署从未简单且​​永远不准确。 这真的减慢了项目的速度。

无论如何,我们用完整的基于Ant的构建和部署机制替换了整个过程。 最终结果是可以在不到30分钟的时间内创建和部署完整的构建,完全自动化。 管理构建和部署的QA人员可以保留一个白板,其中包含哪个环境部署到哪个环境以及哪个组正在使用该环境。 这是旧系统无法实现的。

Ant用于自动化软件构建过程:

http://en.wikipedia.org/wiki/Apache_Ant

Ant允许CRISP(完整,可重复,信息丰富,可调度,可移植)构建。 您可以在Mike Clark和他的着作“ Pragmatic Project Automation”中的 演示文稿中找到有关它的精彩信息。

Ant是一种构建工具,类似于makefile(尽管XML中的语法非常不同)。 如果您只使用Eclipse,那么可以坚持使用它,并且您始终可以将Ant构建文件转换为Eclipse项目(如果我没记错的话,那么Eclipse的启动配置相当于Ant的构建目标)。

如果要部署应用程序的源代码并允许其他人轻松构建或设置它,那么使用Ant实现自动化可能并不是一个坏主意。 但对于用户来说,这通常不是一致的经验,或者至少我没有看到应该在那里做什么目标并做到目前为止做出多少共识。

Ant也可以用于常规自动构建(你不想每晚都在Eclipse中运行,对吧?:-))

如果有一个接近你,我认为你会从CITCON ,持续集成和测试会议中获益良多 。 您可以与许多人讨论应用于构建和测试软件的自动化的好处。

基本上人们使用Ant(使用其他工具)来自动化他们想要在提交后发生的一切。 这种自动化的基本优点是更快,更好,更便宜。

更快,因为事情发生在没有等待人类绕过它的情况下。

更好,因为计算机真的很擅长每次以相同的方式做同样的事情。 (人类往往会嗤之以鼻。)

更便宜,因为你有更少的错误,发生的错误更快被发现,因此更便宜修复。

您还指的是“” Export ant buildfile “。

如果您编写自己的Ant脚本以在eclipse之外构建应用程序,则可以编写自己的目标,使用Ant任务委派给生成的build.xml

此外,您可以配置项目的“构建器”project properties » Builders ),以便在手动或自动构建项目时运行所需的任何脚本(ant或其他)。

Joel(Spolsky)有一篇关于“乔尔测试” 的精彩文章 。 他们中的许多人围绕着能够经常,快速和可靠地做重要的事情。 其中一件事是你的构建。

Eclipse正在使用ant来构建,运行,部署,……

“Ant是一个基于Java的构建工具。从理论上讲,它有点像Make,没有Make的皱纹和纯Java代码的完全可移植性。” (来自链接文字