从 FS magnolia 5.7.9 加载模块配置文件
Load module configuration file from FS magnolia 5.7.9
我需要了解在什么条件下从文件系统 (FS) 加载模块配置文件。具体来说,我想知道为什么 config.yaml 文件没有加载到配置中?
这里是我src/main/resources/<magnolia-module-name>/config.yaml
根据描述的文件模块结构here and here.
'config':
'gitRepoDirectory': '/Users/asusti/jGit/'
'tempVersionDirectory': '/Users/asusti/temp/'
'excludes':
'green': 'green'
'red': 'red'
我从模块配置中将此配置文件导出为 yaml,并将其复制到上述文件位置。
我也根据示例 here:
尝试使用这样的 config.yaml
gitRepoDirectory: /Users/asusti/jGit/
excludes:
green: green
red: red
为了对此进行测试,我从 config/modules/<magnolia-module-name>
下的配置应用程序中删除了 config content node
并重新启动了 magnolia 实例。我错过了什么?
我是运行玉兰5.7.9.
更新:
按照建议 here 我将 config.yaml 添加到 src/main/resources/mgnl-bootstrap/<magnolia-module-name>/config.modules.<magnolia-module-name>.config.yaml
,内容如下。
'config':
'gitRepoDirectory': '/Users/asusti/jGit/'
'jcr:primaryType': 'mgnl:content'
'excludes':
'green': 'green'
'red': 'red'
配置文件夹和下面的属性和节点没有安装在配置中。
解决方案:
对于引导程序,我找到了文档 here 根据该文档:
All bootstrap files are only imported once!
Webapp-based bootstrap files are imported during the first run of the webapp when the Magnolia instance gets installed.
Module-based bootstrap files are imported during the installation of the module.
If you want to import bootstrap files on every start up of the Magnolia instance or of a module, you must use custom installation tasks which are executed by the Module version handler or Module start up classes.
我认为这是因为您检查了错误的文档。请参考 https://documentation.magnolia-cms.com/display/DOCS57/
中的 5.7 文档
如果我没记错的话,该功能是从 6.1 版本开始实现的。
注意那里的 bean 定义。
你正在混合两种东西。您可以拥有 yaml 格式的 bootstrap 文件(这是您的代码片段的第一个和第三个),并且您可以在运行时从 config.yaml 文件加载模块配置(这是第二个代码片段的格式)。
对于在运行时从yaml文件加载模块配置的情况,你应该不需要删除整个模块并强制重新安装,你只需要在放置[=后删除jcr中的config
子节点。 11=] 指定位置的文件。然后,您将不会 在 jcr 中看到 配置,但可以通过模块 class 中的代码查询它或在定义应用程序中看到它。
由于 JCR 配置覆盖来自文件的配置,只要您在 JCR 的 module
节点中有 config
节点,它将覆盖来自 FS 的属性值。
我需要了解在什么条件下从文件系统 (FS) 加载模块配置文件。具体来说,我想知道为什么 config.yaml 文件没有加载到配置中?
这里是我src/main/resources/<magnolia-module-name>/config.yaml
根据描述的文件模块结构here and here.
'config':
'gitRepoDirectory': '/Users/asusti/jGit/'
'tempVersionDirectory': '/Users/asusti/temp/'
'excludes':
'green': 'green'
'red': 'red'
我从模块配置中将此配置文件导出为 yaml,并将其复制到上述文件位置。
我也根据示例 here:
尝试使用这样的 config.yamlgitRepoDirectory: /Users/asusti/jGit/
excludes:
green: green
red: red
为了对此进行测试,我从 config/modules/<magnolia-module-name>
下的配置应用程序中删除了 config content node
并重新启动了 magnolia 实例。我错过了什么?
我是运行玉兰5.7.9.
更新:
按照建议 here 我将 config.yaml 添加到 src/main/resources/mgnl-bootstrap/<magnolia-module-name>/config.modules.<magnolia-module-name>.config.yaml
,内容如下。
'config':
'gitRepoDirectory': '/Users/asusti/jGit/'
'jcr:primaryType': 'mgnl:content'
'excludes':
'green': 'green'
'red': 'red'
配置文件夹和下面的属性和节点没有安装在配置中。
解决方案: 对于引导程序,我找到了文档 here 根据该文档:
All bootstrap files are only imported once!
Webapp-based bootstrap files are imported during the first run of the webapp when the Magnolia instance gets installed.
Module-based bootstrap files are imported during the installation of the module.
If you want to import bootstrap files on every start up of the Magnolia instance or of a module, you must use custom installation tasks which are executed by the Module version handler or Module start up classes.
我认为这是因为您检查了错误的文档。请参考 https://documentation.magnolia-cms.com/display/DOCS57/
中的 5.7 文档如果我没记错的话,该功能是从 6.1 版本开始实现的。
注意那里的 bean 定义。
你正在混合两种东西。您可以拥有 yaml 格式的 bootstrap 文件(这是您的代码片段的第一个和第三个),并且您可以在运行时从 config.yaml 文件加载模块配置(这是第二个代码片段的格式)。
对于在运行时从yaml文件加载模块配置的情况,你应该不需要删除整个模块并强制重新安装,你只需要在放置[=后删除jcr中的config
子节点。 11=] 指定位置的文件。然后,您将不会 在 jcr 中看到 配置,但可以通过模块 class 中的代码查询它或在定义应用程序中看到它。
由于 JCR 配置覆盖来自文件的配置,只要您在 JCR 的 module
节点中有 config
节点,它将覆盖来自 FS 的属性值。