我经常看到 ant 的参考,但我不明白它到底意味着什么?据我所知,它应该编译您的项目,但我不能通过单击“运行”->“在 Eclipse 中运行”来完成此操作吗?

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

有帮助吗?

解决方案

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

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

您可能还需要运行测试用例、单元测试和许多其他过程。

ant 的作用是提供一种机制来自动执行所有这些工作(因此您不必每次都执行此操作),也许您可​​以每天下午 6 点调用此 ant 脚本。

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

  • 连接到颠覆服务器。
  • 下载/更新最新版本
  • 编译应用程序
  • 运行测试用例
  • 打包应用程序(jar、war、ear 或其他任何形式)
  • 将此构建二进制文件提交到 subversion。
  • 在远程服务器中安装应用程序
  • 重新启动服务器
  • 发送包含工作摘要的电子邮件。

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

其他提示

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

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

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

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

我见过 ant 做的一些事情:

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

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

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

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

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

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

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

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

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

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

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

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

Ant允许CRISP(完整,可重复,信息丰富,可调度,可移植)构建。您可以在Mike Clark的演示文稿中找到有关它的精彩信息。书,务实的项目自动化

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

如果要部署应用程序的源代码并允许其他人轻松构建或设置它,那么使用Ant自动执行该操作可能不是一个坏主意。但对于用户而言,这通常不是一致的经验,或者至少我没有就目标应该达到什么目标以及到目前为止所做的事情达成共识。

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

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

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

更快因为事情会立即发生,而无需等待人类绕过它。

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

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

您还指的是“ 导出ant buildfile "

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

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

Joel(Spolsky)在“The Joel Test”中一篇很棒的文章。 "他们中的许多人围绕着能够经常,快速和可靠地做重要事情。其中一件事是你的构建。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top