我们在不同的Maven项目中有几个Liferay 6.2 portlet。其中一些作为依赖项被其他项目导入。虽然这允许我访问java类,但我不知道如何将Freemarker文件从一个项目导入到另一个项目中。
我假设我需要访问依赖项目中的资源,然后告诉Freemarker如何找到并包含它们。假设这是真的,那么我就有两个问题:
1.我如何访问资源,比如FTL文件和图像,从另一个在我的Liferay项目的Maven pom文件中作为依赖项列出的项目,特别是在服务器端代码中?
1.如何告诉Freemarker在哪里查找项目中的FTL文件,这些文件在Mavan pom文件中作为依赖项列出?
如果我错了,那么给予Freemarker访问超光速文件的正确方法是什么?
编辑:我有一个方法来解决第一个问题(虽然不是很好,但我觉得可能有更好的解决方案)。我试着使用外部FTL文件的路径来设置Freemarker配置,但我真的不知道该如何处理这个配置;它看起来并没有被使用。
1条答案
按热度按时间3mpgtkmj1#
我最终发现了这个问题:
Maven: Extract dependency resources before test
使用原始问题和答案中的maven-dependency-plugin代码,我能够将FTL文件从依赖项复制到子项目的Freemarker文件夹中(当然在编译的目标文件夹中),允许Freemarker在不对子项目进行任何其他更改的情况下导入它们(FTL文件必须移动到父项目的resources目录中)。下面是子项目pom文件的相关部分:
我将父项目包括在依赖项中:
然后在构建的plugins部分添加maven-dependency-plugin,使用的构件id与我在dependency部分使用的构件id相同:
我选择的阶段和目标似乎是有意义的,我不确定他们是否是“最佳的”,但他们似乎工作。FTL文件在一个子文件夹中,在“freemarker”文件夹下,在父文件的资源目录。“includes”参数是一个有点更多的限制,我认为,似乎我需要有一个正确的文件夹深度指定,以正确地导入文件,但没关系。
为了清楚起见,我确保复制的Freemarker文件的结果位置与applicationContext.xml文件中已经指定的Freemarker文件夹相匹配: