我有一个名为views
的maven模块,其中包含一个.jsp文件\ Calendar.jsp。我有另一个名为core
的maven模块,它依赖于views
模块。 views
模块的包装类型是jar,而core
模块的包装类型是war。
我已将overlay
配置为将.jsp文件从views.jar
复制到WEB-INF \ views文件夹(core.war
)。
<configuration>
<overlays>
<overlay>
<groupId>org.opensource</groupId>
<artifactId>views</artifactId>
<type>jar</type>
<includes>
<include>**/*.jsp</include>
</includes>
<targetPath>WEB-INF/views</targetPath>
</overlay>
</overlays>
</configuration>
overlay
配置工作正常,它将复制 .jsp文件从views.jar
复制到WEB-INF \ views文件夹(core.war
)。
但问题是它不会从views.jar
中删除这些.jsp文件。因此,我的core.war
最终会出现重复的.jsp文件(WEB-INF / views文件夹中的一个副本和views.jar
中的另一个副本)。结果,core.war
的大小急剧增加。 (views.jar
中的.jsp文件是多余的,因为在执行webapp期间不会使用它们。)
所以,问题是: - 如何配置overlay
来执行剪切 +粘贴操作,而不是复制 +粘贴操作。如果使用overlay
无法做到这一点,还有其他(maven友好)解决方案吗?
答案 0 :(得分:1)
Maven喜欢避免篡改已安装在本地或远程存储库中的依赖工件。我确信你会在这里找到你的战争模块的叠加功能的任何解决方案。
还有另一种方法可以解决这个问题,那就是退后一步,再次查看你的视图模块。你真正需要做的是创建两个带有视图模块的jar,一个包含所有类,另一个只包含JSP文件,并使用分类器保存该工件。您可能必须使用assembly plugin来完成此操作。在Core模块中,将JSP工件与分类器一起使用,然后使用它来覆盖模块的战争创建。