前段时间,我用过 Alfresco 5.2 社区版。当我需要开发某种定制时,我使用了具有三种不同Maven 原型的Alfresco Maven SDK,它是:
- 露天存储库 AMP;
- 露天共享 AMP;
- 露天一体机 (AIO)。
通过使用此 SDK,我开发了AMP 文件,这些文件覆盖在alfresco.war
或share.war
使用模块管理工具。
现在我使用的是 Alfresco 4.2.2 企业版,问题是多年来所有的定制都是直接在爆炸 WAR 中的服务器上执行的。
此处描述了此方法:打包方法
未打包的文件或 ZIP
许多开发环境采用构建过程,该过程可以执行脚本将未打包的修改文件从源代码控制移动到 Web 应用程序的分解 WAR 文件中。Ant、bash 或一些脚本语言都可以很好地做到这一点......
移动未打包的文件具有快速且易于理解的优点...
并进一步:
部署地点
一种解决方案是使用永久展开的部署(而不是在 下部署 Alfresco WAR 文件
/webapps
)。在 webapps 目录下创建一个名为alfresco
的目录并将其内容提取alfresco.war
到其中。然后将您的文件复制到../webapps/alfresco/WEB-INF/
并重新启动Tomcat ...
因此,我不能使用 AMP 自定义(否则所有以前的开发将被删除)。据我所知,我可以使用另一种 JAR 自定义。
如同一文档中所述:
罐
从 开始
v3.4
,Share Web 应用程序支持打包为 JAR 文件的覆盖。这允许多个自定义相互隔离,并且可以预测选择顺序。静态文件,例如JavaScript
,CSS
通常放置在 Share 应用程序的 Web 根目录中的图像文件也可以打包到这些 JAR 中......
tomcat/shared/lib
虽然可以通过将这些 JAR 文件放在...中来避免覆盖问题(至少在 Tomcat 中) 。
但是,我也不能利用这种方法。例如,我需要覆盖FreeMarker模板:
/opt/tomcat7/webapps/share/WEB-INF/classes/alfresco/web-extension/site-webscripts/components/form/service-note/service-note-order-things.ftl
我在 IDE 中创建适当的目录结构,以某种方式更改模板,然后构建 Jar 文件。然后我把它放进去tomcat7/shared/lib
(我也把它放进去tomcat7/webapps/share/WEB-INF/lib
,但也没有成功)并重新启动应用程序服务器。
重新启动后,我看不到我的更改 - 模板保持不变。此外,如果我尝试将另一个模板添加到同一目录 ( .../service-note/...
),则不会出现那里的新模板。
在我的 Tomcat 安装中,共享类加载器配置正确。
我究竟做错了什么?如何使用 JAR 覆盖静态资源?
我将非常感谢您提供的信息。谢谢大家。