我正在尝试修复Liferay portlet中的一个棘手的JavaScript问题(碰巧也运行一个大型的Flex ),每次我进行更改时,我都必须返回到提示符,在portlet上执行"ant deploy“,然后等待它部署,然后重新加载页面,然后等待Flex应用加载。每次我尝试任何微小的改变,整个过程都需要3-4分钟。
有没有配置或设置可以解压JavaScript,让我可以直接在服务器上编辑JS文件,而不需要每次都重新部署?我读了一些关于“开发者模式”的文章,但它似乎不起作用,而且所有的Liferay文档似乎都是针对Tomcat的,而我使用的是JBoss。
发布于 2012-01-24 03:01:59
如果您正在部署一个war文件,只需在适当的位置(在jboss deploy目录中)将其解压即可,因此您将拥有一个名为FlexPort.war的目录,其中包含来自原始WAR文件的所有已解压内容,而不是一个名为FlexPort.war的压缩文件。
如果更新JavaScript文件,可能需要在浏览器中清除缓存,否则应立即生效。如果您更新类,您可以通过WAR/web-inf/web.xml文件的touch-ing快速重新部署。
===========================================================
我不确定为什么您看不到JS更新,但请尝试重现此序列。安装Firebug或Fiddler等浏览器工具会有所帮助,这样您就可以看到响应头。
如果您在文件修改后仍然看到相同的时间戳:
一个快速的谷歌透露了这个关于Liferay Static Content Caching的链接。似乎Liferay可能确实在ehcache中缓存了所有这些东西。如果您的portlet应用程序是这种情况,那么您有两个选择:
ehcache关闭缓存(当然,只在开发版本中)通过在你的portal-ext.properties:com.liferay.portal.servlet.filters.cache.CacheFilter=false
发布于 2012-02-07 21:41:41
分解war文件对我来说不起作用。我通过使用node.js script(an http static file server)来解决这个问题。我所做的是在编辑JS时将此脚本复制到portlet项目内的javascript文件夹中,并启动服务器(您需要在开发机器上安装node.js )。然后,我将portlet中JS脚本的引用更改为指向静态服务器urls。例如:-在您的liferay portlet.xml中,
<footer-portlet-javascript>/js/app.js</footer-portlet-javascript>更改为,
<footer-portlet-javascript>http://localhost:8888/app.js</footer-portlet-javascript>之后,我可以只编辑文件,并立即在浏览器中查看更改。
(还需要在静态文件服务器中设置Access-Control-Allow-Origin头部)
https://stackoverflow.com/questions/8972937
复制相似问题