自定义演示未加载到 Magnolia CMS

Posted

技术标签:

【中文标题】自定义演示未加载到 Magnolia CMS【英文标题】:Customized Demo is not loading to Magnolia CMS 【发布时间】:2016-04-21 14:53:59 【问题描述】:

我已关注Travel Demo - for developers 并设法开始旅行演示。现在我正在尝试在 magnolia-travel-tours 上自定义模板 (ftl)。

我注意到,对模板的更改没有被采纳。看起来,由于我在包含作为对我的 Web 应用程序的依赖项时没有指定版本号,所以在我构建 Magnolia Web 应用程序时正在下载演示的新副本。 这就是我放置依赖项的方式,

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.esharps.projects</groupId>
        <artifactId>coreCMSProject</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>coreCMSProject-webapp</artifactId>
    <name>coreCMSProject: webapp</name>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>info.magnolia</groupId>
            <artifactId>magnolia-empty-webapp</artifactId>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>info.magnolia</groupId>
            <artifactId>magnolia-empty-webapp</artifactId>
            <type>war</type>
        </dependency>
        <dependency>
            <groupId>info.magnolia.demo</groupId>
            <artifactId>magnolia-travel-tours</artifactId>
        </dependency>

如果我的理解有误,请纠正我。

现在我所做的是,我为 magnolia-travel-tours 提供了版本号和组 ID,并重建了 magnolia-travel-tours(必须为 magnolia-travel-demo 模块指定版本号)并包含我的 webapp 上的那个特定版本

magnolia-travel-tours 的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>info.magnolia.demo</groupId>
    <artifactId>magnolia-travel-demo-parent</artifactId>
    <version>0.11-SNAPSHOT</version>
    <relativePath>../magnolia-travel-demo-parent/pom.xml</relativePath>
  </parent>
  **<groupId>info.magnolia.demo</groupId>**
  <artifactId>magnolia-travel-tours</artifactId>
  <packaging>jar</packaging>
  **<version>0.11-CUSTOM</version>**
  <name>Magnolia Travel Tours Module</name>
  <description>Magnolia module showcasing a travel-tours website</description>

  <properties>
    <cloverCoverageThreshold>37</cloverCoverageThreshold>
  </properties>

  <dependencies>
    <!-- Dependencies to travel-demo -->
    <dependency>
      <groupId>info.magnolia.demo</groupId>
      <artifactId>magnolia-travel-demo</artifactId>
      <version>**0.11-SNAPSHOT**</version>
    </dependency>

现在的问题是,当我尝试启动网络应用程序时出现以下错误。

2016-04-22 02:33:54,906 ERROR info.magnolia.init.MagnoliaServletContextListener : Oops, Magnolia could not be started
info.magnolia.module.model.reader.ModuleDependencyException: The following exceptions were found while checking Magnolia modules dependencies (i.e. those in META-INF/magnolia/my-module.xml):
Module Magnolia Travel Tours Module (version 0.11.0-CUSTOM) is dependent on travel-demo (version 0.11-CUSTOM), but Magnolia Travel Demo Module (version 0.10.0) is currently installed.
Module Magnolia Travel Tours Module (version 0.11.0-CUSTOM) is dependent on mtk (version 0.10/*), but Magnolia Templating Kit (version 0.9.0) is currently installed.
info.magnolia.module.model.reader.ModuleDependencyException: The following exceptions were found while checking Magnolia modules dependencies (i.e. those in META-INF/magnolia/my-module.xml):

我应该如何定制旅行演示?

【问题讨论】:

【参考方案1】:

似乎您正在尝试自定义 travel-demo 而不更改您正在部署的网络应用程序中的依赖项。我假设您有正在使用的 IDE。然后我会检查我想要部署的 webapp,然后在它的 pom 中,我会更改 travel-demo 依赖项,它指向我的自定义 travel-demo。您在这里的错误是您导入了 empty-webapp,但它当时已经构建,因此您的更改当时没有被拾取。

请看一下

      <!-- 1. Import dependency management from one of our parent poms (bundles or packs) -->
      <dependency>
        <!-- CE bundle -->
       <groupId>info.magnolia.bundle</groupId>
       <artifactId>magnolia-bundle-parent</artifactId>
        <version>$magnoliaVersion</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>

      <!-- 2. Own modules -->
      <dependency>
        <groupId>info.magnolia.dev</groupId>
        <artifactId>magnolia-dev-webapp</artifactId>
        <version>$project.version</version>
      </dependency>

      <!-- 3. Version overrides for modules in this project -->
      <!--<dependency>-->
        <!--<groupId>info.magnolia.contacts</groupId>-->
        <!--<artifactId>magnolia-contacts</artifactId>-->
        <!--<version>$contactsVersion</version>-->
      <!--</dependency>-->
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <!-- animal-sniffer doesn't support java 1.8 yet -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>animal-sniffer-maven-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

基本上,这个开发项目包含一个您可以部署的网络应用程序,您可以在那里更改任何依赖项。它进行了深入的评论,因此使用起来很简单。最后,你必须部署开发项目的战争。

干杯,

【讨论】:

对不起,我无法理解。顺便说一句,我也无法访问您共享的链接。如果您能详细说明,请不吝赐教。添加依赖项后,我再次构建了 webapp。您是要检查 webapp 代码并构建而不是添加以下作为依赖项吗? 是的,检查 webapp 代码并在该 webapp 代码的 pom 文件中添加依赖项,然后构建依赖项。 我添加了答案并在那里添加了一个pom文件

以上是关于自定义演示未加载到 Magnolia CMS的主要内容,如果未能解决你的问题,请参考以下文章

如何在尺寸类更改期间从自定义演示控制器过渡到模态?

在 Magnolia CMS 5 中将组件从一个自定义模板继承到另一个模板

自定义操作实施 Magnolia CMS

如何在 magnolia CMS 中配置自定义 servlet

在 Magnolia CMS 中注册自定义 VirtualUriMapper

LayUi创建一个自定义通用模块