0

前段时间,我用过 Alfresco 5.2 社区版。当我需要开发某种定制时,我使用了具有三种不同Maven 原型的Alfresco Maven SDK,它是:

  • 露天存储库 AMP;
  • 露天共享 AMP;
  • 露天一体机 (AIO)。

通过使用此 SDK,我开发了AMP 文件,这些文件覆盖在alfresco.warshare.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 文件的覆盖。这允许多个自定义相互隔离,并且可以预测选择顺序。静态文件,例如JavaScriptCSS通常放置在 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 覆盖静态资源?

我将非常感谢您提供的信息。谢谢大家。

4

1 回答 1

2

需要使用SurfBug 调试工具来识别模板文件(Template Type属性)。

然后开发Spring Surf扩展模块—— “是自定义许多 Alfresco Share 用户界面功能的首选方式” ——并将其打包到 Jar 中。然后我应该使用可通过 web 脚本获得的模块部署:

http://host:port/share/service/modules/deploy

FTL 可以自定义如下:

  • 将新内容放在某些之前/之后@region
  • 将某些内容替换为@region新内容;
  • 完全删除某些@region

在文件系统中,我们将拥有相同的未修改模板,因为 Spring Surf 写入内存中的模型,然后允许扩展在模型刷新到输出流之前操作该模型。

也可以看看:

于 2017-12-01T14:31:52.763 回答