【发布时间】:2011-11-18 23:15:53
【问题描述】:
请原谅我提出一个新手问题,但 dist 和 deploy 文件夹有什么区别?看起来是一回事 - 两者都包含文件的 .jar。但是,当您清理和构建项目时,看起来只更新了 dist 文件夹。部署文件夹如何更新?
谢谢。
【问题讨论】:
-
正在使用 NetBeans IDE..
请原谅我提出一个新手问题,但 dist 和 deploy 文件夹有什么区别?看起来是一回事 - 两者都包含文件的 .jar。但是,当您清理和构建项目时,看起来只更新了 dist 文件夹。部署文件夹如何更新?
谢谢。
【问题讨论】:
我假设您使用的目录布局类似于 Netbeans IDE 默认创建的目录布局。
dist 是存储您生成的档案的文件夹(因此它通过清理和构建进行更新)。 build 文件夹包含已编译的类和资源,但不包含压缩档案。 默认情况下,Maven 会将两者的内容都放入 target 文件夹中。
deploy 文件夹是您放置生成的工件(存档或与存档具有相同布局的目录树,也就是分解的存档)的位置,以便应用程序服务器可以为它提供服务。
在开发环境中,将服务器配置为扫描dist 文件夹以查找生成的工件并重新部署它们并不罕见。所以,从这个意义上说,deploy 和 dist 文件夹可以是相同的。
您甚至可以拥有“就地”部署方案。这通过将您的类直接编译到webapp 内的WEB-INF/classes 文件夹来工作(使用类似Maven war:inplace 目标的东西)。如果您将服务器设置为扫描此文件夹中的更改,您可以在适当的位置编辑 jps 等资源,并将其立即反映到您正在运行的应用程序中(也称为爆炸工件热部署)。
当然,您可以通过指示您的 IDE 将资源和编译的类复制到展开的存档结构并配置您的服务器以对其进行扫描来完成类似的操作。 Netbeans 倾向于为此使用build/web。
此外,有时增量重新部署是不可能的,并且通常不希望完全重新部署(某些应用程序可能需要几分钟才能重新部署)。这就是为什么您可以使用单独的文件夹/将工件部署为 jars/wars/ears 等。
编译、打包和部署是构建生命周期中非常不同的阶段/概念,它们可能会一起发生,也可能不会一起发生。
我希望这些信息足以让你继续前进。
干杯,
【讨论】:
通常,一个项目负责创建一个工件,当该工件被构建时,它被放置在一个名为 target 或 dist 的目录中。当您的项目负责创建 Web 应用程序时,您需要一个地方来布局项目中的文件以在您的 servlet 容器或应用服务器下运行,而该地方就是部署文件夹。所以 dist 目录通常会有一个单独的工件,比如 war、ear 或 jar,而 deploy 文件夹的内容会在应用服务器可以使用的目录结构中展开。部署文件夹内容的更新方式取决于您的构建过程或 IDE 集成。
【讨论】: