不久前,我使用了Alfresco 5.2社区版。当我需要开发某种自定义时,我使用Alfresco Maven SDK和三个不同的Maven archetypes,它是:
通过使用此SDK,我开发了AMP files,使用模块管理工具覆盖alfresco.war
或share.war
。
现在我正在使用Alfresco 4.2.2企业版,问题是多年来所有的自定义都是直接在爆炸的WAR中的服务器上执行的。
此处描述了此方法:Packaging Approaches
未打包文件或ZIP
许多开发环境都采用可以执行的构建过程 用于将未打包的已修改文件从源代码控制移动到的脚本 Web应用程序的爆炸WAR文件。 Ant,bash或一些脚本 语言都可以成为这样做的好方法......
移动未打包的文件具有快速简便的优点 明白......
进一步说:
部署位置
一种解决方案是使用永久爆炸部署(而不是 在
/webapps
下部署Alfresco WAR文件。创建一个目录 在webapps目录下调用alfresco
并提取内容alfresco.war
进入其中。然后将文件复制到../webapps/alfresco/WEB-INF/
并重启Tomcat ......
因此,我无法使用AMP自定义(否则所有以前的开发都将被删除)。据我所知,我可以使用替代JAR定制。
如同一份文件所述:
JAR
自
v3.4
起,Share Web应用程序支持覆盖 打包为JAR文件。这允许多个自定义 彼此隔离,可以预测选择顺序。 静态文件,例如JavaScript
,CSS
或图像文件 通常可以放在Share应用程序的Web根目录中 被打包成这些JAR ......虽然可以避免覆盖问题(至少在 Tomcat)将这些JAR文件放在
中tomcat/shared/lib
...
但是,我也无法利用这种方法。例如,我需要覆盖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覆盖静态资源?
我将非常感谢这些信息。谢谢大家。
答案 0 :(得分:2)
必须使用SurfBug debugging tool来标识模板文件(Template Type
属性)。
然后开发Spring Surf扩展模块 - "are the preferred way of customizing many of the Alfresco Share user interface features" - 并将其打包到Jar中。 然后我应该使用通过网络提供的Module deployment - 脚本在:
http://host:port/share/service/modules/deploy
FTL可以自定义如下:
@region
; @region
的内容; @region
。在文件系统中,我们将使用相同的未修改模板,因为Spring Surf会写入内存模型,然后允许扩展在模型刷新到输出流之前操作该模型。
另见: