玉兰6.0至少执行MyModule的UpdateTasks

时间:2018-12-23 04:06:52

标签: java tomcat content-management-system magnolia

当前,我使用像这样的简单ModuleVersionHandler:

public class MyModule extends DefaultModuleVersionHandler {

public MyModule() {
    DeltaBuilder v60 = DeltaBuilder.update(".0.0", "Update to 6.0 and new configuration settings.");
    v60.addTask(new BootstrapSingleModuleResource("Module configuration","Default configuration for myModule web.","config.modules.myModule.xml"));
    register(v60);
}


@Override
protected List<Task> getExtraInstallTasks(InstallContext installContext) {
    List<Task> extraTasks = new ArrayList<Task>();
    extraTasks.add(new NewPropertyTask("SiteDefault","Set Default Site Task", RepositoryConstants.CONFIG, "/modules/site/config/site", "extends" , "/modules/myModule/config/myModule/"));
    return extraTasks;
}

}

我的问题是,如果我将其部署在已清除的工作区@Tomcat或Wildfly中,则该更新将首先处理,因此在这种情况下它将失败,因为木兰nodePath / modules / site / config / site将不存在。

如果我重新实例化到NodeDelegateTasks中以进行检查,然后自己创建路径或构建节点路径并设置extends属性的其他内容,则以下木兰安装任务将覆盖我的任务。好像玉兰安装任务将删除与/ modules / site / *匹配的先前节点

我如何至少或在安装木兰后告诉Magnolia做myModule任务?

亲切的问候

2 个答案:

答案 0 :(得分:0)

您是否尝试过在自定义模块中向站点模块添加依赖项?

<dependency>
  <groupId>info.magnolia.site</groupId>
  <artifactId>magnolia-site-app</artifactId>
  <version>1.2.2</version>
</dependency>

这将确保在安装模块之前先安装站点模块。

我希望这会有所帮助!

答案 1 :(得分:0)

您可以像@ bradley-andersen建议的那样通过Maven / Gradle添加构建依赖关系,或者仅将模块作为安装依赖关系添加到模块描述符XML中,如下所示:

while(true)

有关模块描述符的更多信息,请参阅木兰文档:https://documentation.magnolia-cms.com/display/DOCS60/XML-based+module+descriptor#XML-basedmoduledescriptor-Moduledependencies