Magnolia 中未更新模块版本

Posted

技术标签:

【中文标题】Magnolia 中未更新模块版本【英文标题】:Not updated module version in Magnolia 【发布时间】:2020-05-02 17:49:49 【问题描述】:

Magnolia 5.7 中未更新模块版本的原因可能是什么

在 Magnolia java 项目中,我在 META-INF/magnolia/mymodule.xml 中有带有 XML 描述符的子模块

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module SYSTEM "module.dtd" >
<module>
  <name>mymodule</name>
  <displayName>mymodule</displayName>
  <description>my module</description>
  <version>$project.version</version>
  <!-- <version>1.3</version> -->
  <dependencies>
    <dependency>
      <name>core</name>
      <version>5.7.4/*</version>
    </dependency>
  </dependencies>

</module>

当我在项目 maven pom.xml 中使用更改的版本重建整个项目并在服务器上部署时,我在 Magnolia 的 Author 配置控制台中看不到更新的版本。我必须在配置控制台中手动删除旧版本节点(删除 JCR 节点),然后重新启动服务器。完成这些步骤后,我可以在配置控制台中确认新版本。如果您必须部署到多个开发/阶段/生产环境,这会很痛苦,不用说我无法访问生产环境中的公共实例。

未更新版本的问题听起来并不重要,但我也没有看到与此模块相关的新页面或重命名页面。只有当我通过删除版本强制重新加载模块时它们才会出现。

一个可能有助于识别问题的附加细节:我可以删除 JCR 中的版本节点,但不能删除整个模块节点。我收到一条错误消息“无法取消发布配置工作区中的 1 级和 2 级节点”。

【问题讨论】:

【参考方案1】:

您在删除之前在config:/modules/your_module/version 中看到了什么版本?它是否低于您尝试安装的版本号?我怀疑它是相同的或更高的。即您正在尝试重新安装相同的版本或降级版本。这些都不支持,因此它不会触发安装过程。或者您可能正试图从 SNAPSHOT 升级到完整版,但也没有安装增量。

至于您在尝试删除这些节点时收到的警告,这是故意的。您不应该以普通用户的身份删除这些节点,因为您可能会导致依赖(公共)实例的损坏。只有作为管理员(通过 JCR 浏览器),您才可以删除,前提是您知道自己在做什么以及为什么要这样做。

【讨论】:

在生产版本中,我们从 1.2-SNAPSHOT 切换到 1.2;不支持? 只需意识到一个非常简单的事实,即模块版本与整个项目版本不同,并且可能不应该与从 pom 文件中获取的版本保持一致。 不支持从快照更新到最终版本。当您安装快照时,预计您会在开发或测试环境中执行此操作,以实际测试到此给定快照的升级,然后再进行最终安装并在生产中安装。预计您不会在生产环境中运行快照。升级机制作为一种以受控方式对生产进行更改的手段而存在,并且由于您不希望在那里运行快照,因此不需要添加从快照升级到最终版本的支持(更不用说这种支持会带来的技术困难)。 很好的解释。谢谢你,简!

以上是关于Magnolia 中未更新模块版本的主要内容,如果未能解决你的问题,请参考以下文章

pom 中的 CMS Magnolia magnolia-rest-content-delivery 版本

安装 Magnolia 数据模块(2.3.0 版)失败

Magnolia 版本中的隐藏操作是 5.7

Magnolia 从 5.3.4 升级到最新版本

Swift 5 中未更新应用程序版本和内部版本号

商店模块无法与 Magnolia CMS 5.4 一起正常工作