代码之家  ›  专栏  ›  技术社区  ›  Ali

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

  •  20
  • Ali  · 技术社区  · 16 年前

    我经常看到蚂蚁,但我不知道它到底是什么意思?据我所知,它应该编译您的项目,但我不能只通过单击运行来完成这一点->在Eclipse中运行吗?

    编辑:我想我应该重新表述我的问题。我已经知道Ant是一个“构建自动化软件”,我的问题是,什么是构建自动化?我认为你应该测试你的应用程序,当它运行时,你点击Eclipse中的“构建”按钮或者通过命令行Java,它就把一个.jar文件放出来了?那么,为什么需要“自动化”这个过程呢?

    12 回复  |  直到 16 年前
        1
  •  21
  •   OscarRyz    16 年前

    我已经知道Ant是一个“构建自动化软件”,我的问题是,什么是构建自动化?我认为你应该测试你的应用程序,当它运行时,你点击Eclipse中的“构建”按钮或者通过命令行Java,它就把一个.jar文件放出来了?那么,为什么需要“自动化”这个过程呢?

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

    您可能需要另外运行测试用例、单元测试以及许多其他过程。

    Ant所做的,是提供一种自动化所有这些工作的机制(因此您不必每次都这样做),并且您可能每天下午6点调用这个Ant脚本。

    例如,在一些项目中,需要每天进行一次构建,下面是使用Ant自动化的任务,因此它们可以在不需要人工干预的情况下运行。

    • 连接到Subversion服务器。
    • 下载/更新最新版本
    • 编译应用程序
    • 运行测试用例
    • 打包应用程序(在jar、war、ear或其他地方)
    • 将此生成二进制文件提交给Subversion。
    • 在远程服务器中安装应用程序
    • 重新启动服务器
    • 发送包含作业摘要的电子邮件。

    当然,对于其他项目来说,这是多余的,但是对于其他一些项目来说,这是非常有帮助的。

        2
  •  16
  •   Community CDub    8 年前

    rogeriopvl 是绝对正确的,但要回答您的“难道我不能通过单击运行来完成吗?->在Eclipse中运行?”问题:对于一个您自己正在处理的项目来说,这很好,而且不需要在多个环境中进行可重复的、可脚本化的构建。

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

        3
  •  11
  •   mtruesdell    16 年前

    Ant用于自动化构建过程,但构建过程通常远不止编译。Ant有“任务”,可以用来执行各种有用的功能。您可以创建自己的任务来完成任何事情,通过编写Java类并告诉蚂蚁在哪里找到它。然后,您可以混合和匹配这些任务,以创建将执行一组任务的目标。

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

    我见过蚂蚁做的一些事情:

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

    在许多大公司(可能还有一些小公司)中,您会发现生产代码 不是由开发它的人建造的 . 相反,开发人员可以将他们的代码签入源代码存储库并标记它。然后他们把这个标签交给一个构建团队。

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

    这确保了任何一个开发人员的计算机上发生的任何事情都不会“污染”构建。(或者,更可能的是,系统工作不需要任何外部源代码管理!)

    所以你使用的大多数软件永远不会, 曾经 从开发人员的桌面构建。

    另外,你可能还想看看 Continuous Integration

        5
  •  6
  •   Gary    16 年前

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

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

    实际上,各个软件模块通常都能正常工作,但是构建和部署却非常无效。同样糟糕的是,任何人都很难将构建部署到多个环境中。管理层会说,好吧,现在您可以在我们的回归测试环境中使用这个构建了。现在在另一个环境中部署相同的构建,这样销售人员就可以演示即将推出的软件。这应该很简单,但也需要至少2天,然后是“调试构建”阶段。构建和部署从来都不是简单的,也从来不是准确的。这真的减慢了项目的进度。

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

        6
  •  5
  •   rogeriopvl    16 年前

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

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

        7
  •  4
  •   Fabian Steeg    16 年前

    Ant允许清晰(完整、可重复、信息丰富、可调度、可移植)的构建。你可以在这里面找到关于它的很好的信息 presentation 麦克·克拉克在他的书中, Pragmatic Project Automation .

        8
  •  2
  •   Joey Gumbo    16 年前

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

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

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

        9
  •  2
  •   Jeffrey Fredrick    16 年前

    如果有人靠近你,我想你会得到很多 CITCON 持续集成与测试会议。你可以和很多人谈论自动化应用于构建和测试软件的好处。

    基本上,人们使用Ant(和其他工具)来自动化他们想要在提交之后发生的所有事情。这种自动化的基本优势是更快、更好和更便宜。

    更快 因为事情很快就会发生,而不需要等待一个人去做。

    更好 因为电脑真的很擅长每次做同样的事情。(人类倾向于吸吮它。)

    更便宜的 因为你的错误更少,而且发生的错误会更快地被发现,因此修复起来更便宜。

        10
  •  0
  •   Community CDub    8 年前

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

    如果编写自己的Ant脚本来在Eclipse之外构建应用程序,则可以编写自己的目标,使用 Ant task 委托给生成的 编译文件 .

    此外,还可以配置 项目“建设者” ( project properties » Builders )在构建项目时,手动或自动运行您想要的任何脚本(Ant或其他脚本)。

        11
  •  0
  •   Jared    16 年前

    乔尔(斯波斯基)有 a great article 在“乔尔测试”中,他们中的许多人都围绕着能够经常、快速和可靠地做重要的事情。其中之一就是你的体型。

        12
  •  -1
  •   Dutow    16 年前

    Eclipse正在使用Ant构建、运行、部署…

    “Ant是基于Java的构建工具。从理论上讲,它有点像SUP,没有SUP的褶皱和纯Java代码的完全可移植性。 link text