该冲突通常是由于在AEM中存在多个版本化客户端库配置引起的。解决这个问题的最佳方法是通过使用“客户端库管理器”来管理客户端库。使用客户端库管理器要确保每个客户端库都具有唯一的名称,并指定要使用的特定版本。以下是使用客户端库管理器解决版本化客户端库配置冲突的示例代码:
<%@include file="/libs/granite/ui/global.jsp"%>
<%
String cqRootPath = "/apps/my/project/clientlibs";
ClientLibraryManager clManager = getResourceResolver().adaptTo(ClientLibraryManager.class);
clManager.create("my-project.clientlibs.js", Collections.singletonList("js/site.js"), null);
clManager.create("my-project.clientlibs.css", Collections.singletonList("css/site.css"), null);
clManager.create("my-project.clientlibs.head", null, Collections.singletonList("my-project.clientlibs.js"));
clManager.create("my-project.clientlibs.all", null, Arrays.asList("my-project.clientlibs.css", "my-project.clientlibs.head"));
%>
上面的代码将创建四个客户端库,其中“my-project.clientlibs.all”是包含所有必要的CSS和JavaScript文件的客户端库,可以使用cq:includeClientLib标签在页面中调用它。
确保在AEM中管理多个版本的客户端库配置时使用唯一的名称,以避免冲突。