【发布时间】:2016-06-15 16:27:47
【问题描述】:
背景
设置如下:
- 使用 Subversion 的多开发人员环境
- NetBeans 8.0.2
- JDK 1.7
- Java EE6
- JBoss 6.2 EAP 独立运行
我们可能不会更改工具;我们既不能使用 Maven 也不能使用 JRebel。硬件升级也不在范围内。
代码组织
源代码,包括与网络相关的文件,检出到:
C:\Apps\07-Work\Project\Project-Admin\Project-Admin-User-war\
这个目录包括一个通用的开发结构(粗体从存储库中检出):
- 构建 - 编译文件
- dist - .war 文件
- nbproject - 项目文件
- src - Java 源代码
- web - JSF 页面、WEB-INF 目录、CSS 文件等
- build.xml - Ant 脚本
JBoss 安装
Web应用服务器安装到:
C:\Apps\04-Tools\jboss-eap-6.2
问题
开发 - 部署 - 测试 周期非常缓慢。测试对网页的单个更改可能需要 30 秒以上的时间。这是当前的流程:
- 在 NetBeans 中编辑文件。
- 保存文件。
- Shift+F11(运行>>清理并构建)。
- 切换到浏览器选项卡 (http://localhost:9990/console/App.html#deployments)。
- 点击替换。
- 点击选择文件。
- 选择Project-Admin-User-war.war文件。
- 点击打开。
- 点击下一步。
- 点击保存。
- 切换到浏览器选项卡 (http://localhost:8080/admin/users/)。
- F5 重新加载页面。
构建(第 3 步)大约需要 26 秒;手动部署增加了这一点。
这是理想的开发周期:
- 在 NetBeans 中更改 JSF 页面(注意:这是从存储库中签出的文件)。
- 保存 JSF 页面。
- Alt+Tab 到浏览器窗口。
- F5 重新加载页面。
对 Java 源代码更改进行热部署并不那么重要,因为代码开发时间往往比简单的网页布局更改要长得多。
编辑exploded contents 意味着开发人员不再编辑从存储库中签出的文件,因此会产生额外的步骤或脚本,或者可能会丢失工作。
其他人建议使用 Deploy on save 功能,即disabled:
另一个建议(根据屏幕截图)是在调试模式下运行应用程序,但选择 Debug >> Project (Ctrl+F5) 没有显示更改后的页面更新。
问题
是否可以使用给定的工具和约束来热部署 JSF 页面?如果是这样,实现理想的开发周期所需的具体步骤是什么?
独立配置
README.txt 文件显示可以“实时部署”内容:
H) 仅限手动模式:实时替换当前部署的解压缩内容的部分而不重新部署:
cp -r target/example.war/foo.html $AS/standalone/deployments/example.war
Windows 上的 cp 命令转换为:
xcopy /e /s /y src dest
这导致:
- 打开命令提示符。
- 更改目录:
cd C:\Apps\04-Tools\jboss-eap-6.2\standalone\deployments - 在复制过程中创建 skipdeploy 以防止部署:
type nul >> Project-Admin-User-war.war.skipdeploy - 复制文件以创建包含已更改文件的目录:
xcopy /i /y /e /s C:\Apps\07-Work\Project\Project-Admin\Project-Admin-User-war\web Project-Admin-User-war.war
下一步:
- 删除跳过部署:
rm Project-Admin-User-war.war.skipdeploy - 创建多部署:
type nul >> Project-Admin-User-war.war.dodeploy - 返回浏览器。
- 按 F5 刷新。
结果是资源包丢失了:
相关
【问题讨论】:
-
您会接受
buy the fastest development computers available作为答案吗? -
为什么需要第 3 步?不保存自动复制吗?即使在非调试模式下?你检查过了吗?您是否将 jsf 应用配置为在开发模式下运行?
-
@Kukeltje:保存不会自动复制它——NetBeans 不知道 JBoss 将其 WAR 文件保存在哪里,NetBeans 也不知道 JBoss 是否会自动分解 WAR 文件。可以将 NetBeans 配置为(作为 mjn 的答案)以自动部署到 JBoss,但这只是部分解决方案。应该花费最短时间的解决方案是直接复制更新 WAR 文件,无需重新构建或重新部署。复制是直接发生还是间接发生(通过
deployments目录)现在是破解这个问题的关键。
标签: jsf netbeans jboss web-deployment