我可以从我的Liferay portlet中的另一个Maven项目导入资源,如FTL文件吗?

btxsgosb  于 2022-12-11  发布在  Maven
关注(0)|答案(1)|浏览(140)

我们在不同的Maven项目中有几个Liferay 6.2 portlet。其中一些作为依赖项被其他项目导入。虽然这允许我访问java类,但我不知道如何将Freemarker文件从一个项目导入到另一个项目中。
我假设我需要访问依赖项目中的资源,然后告诉Freemarker如何找到并包含它们。假设这是真的,那么我就有两个问题:
1.我如何访问资源,比如FTL文件和图像,从另一个在我的Liferay项目的Maven pom文件中作为依赖项列出的项目,特别是在服务器端代码中?
1.如何告诉Freemarker在哪里查找项目中的FTL文件,这些文件在Mavan pom文件中作为依赖项列出?
如果我错了,那么给予Freemarker访问超光速文件的正确方法是什么?
编辑:我有一个方法来解决第一个问题(虽然不是很好,但我觉得可能有更好的解决方案)。我试着使用外部FTL文件的路径来设置Freemarker配置,但我真的不知道该如何处理这个配置;它看起来并没有被使用。

3mpgtkmj

3mpgtkmj1#

我最终发现了这个问题:
Maven: Extract dependency resources before test
使用原始问题和答案中的maven-dependency-plugin代码,我能够将FTL文件从依赖项复制到子项目的Freemarker文件夹中(当然在编译的目标文件夹中),允许Freemarker在不对子项目进行任何其他更改的情况下导入它们(FTL文件必须移动到父项目的resources目录中)。下面是子项目pom文件的相关部分:
我将父项目包括在依赖项中:

<dependency>
    <groupId>ourGroupId</groupId>
    <artifactId>parentArtifactId</artifactId>
    <version>1.0.0</version>
</dependency>

然后在构建的plugins部分添加maven-dependency-plugin,使用的构件id与我在dependency部分使用的构件id相同:

<plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <id>resource-dependencies</id>
            <phase>process-resources</phase>
            <goals>
                <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
                <includeArtifactIds>parentArtifactId</includeArtifactIds>
                <includes>freemarker/*/*.ftl</includes>
                <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

我选择的阶段和目标似乎是有意义的,我不确定他们是否是“最佳的”,但他们似乎工作。FTL文件在一个子文件夹中,在“freemarker”文件夹下,在父文件的资源目录。“includes”参数是一个有点更多的限制,我认为,似乎我需要有一个正确的文件夹深度指定,以正确地导入文件,但没关系。
为了清楚起见,我确保复制的Freemarker文件的结果位置与applicationContext.xml文件中已经指定的Freemarker文件夹相匹配:

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/freemarker/" />
</bean>

相关问题