如何在处理叠加后从.jar文件中删除.jsp

时间:2010-12-16 06:53:14

标签: maven maven-3

我有一个名为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友好)解决方案吗?

1 个答案:

答案 0 :(得分:1)

Maven喜欢避免篡改已安装在本地或远程存储库中的依赖工件。我确信你会在这里找到你的战争模块的叠加功能的任何解决方案。

还有另一种方法可以解决这个问题,那就是退后一步,再次查看你的视图模块。你真正需要做的是创建两个带有视图模块的jar,一个包含所有类,另一个只包含JSP文件,并使用分类器保存该工件。您可能必须使用assembly plugin来完成此操作。在Core模块中,将JSP工件与分类器一起使用,然后使用它来覆盖模块的战争创建。