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