在jar META-INF / resources中覆盖JSP文件是不可预测的

时间:2014-06-14 13:16:10

标签: jsp maven resources taglib meta-inf

我正在构建一个模块化Web应用程序,它在jar依赖项(不同模块)中包含一些Spring组件。这个jar还包含一些JSP资源,如:

 - Module
     + src/main/resources/META-INF/resources/module/*.jsp

现在我想在我的应用程序中使用以下结构覆盖特定的JSP。

 - App
     + src/main/resources/META-INF/resources/module/menu.jsp

使用tomcat7:run运行应用程序时,它有时会显示被覆盖的menu.jsp,但任何后续运行都将以旧版本结束。

tomcat7:run-war一起跑步更有希望。大多数运行都会显示新的menu.jsp。但是,当将应用程序部署到另一个Tomcat 7实例时,旧菜单再次可见。

menu.jsp包含使用pageContext.include("/module/menu.jsp");,由自定义标记调用。

如何使资源覆盖更可靠?我完全无能为力,因为它似乎随机工作。我希望有人能在这里说清楚。


不确定这是否相关但是为了能够使用组件扫描我需要使用以下插件配置解压缩jar类。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack</id>
            <phase>process-resources</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <overWriteIfNewer>false</overWriteIfNewer>
                <artifactItems>
                    <artifactItem>
                        <groupId>my.company</groupId>
                        <artifactId>my-dependency</artifactId>
                        <version>1.0-SNAPSHOT</version>
                        <type>jar</type>
                        <outputDirectory>${project.build.directory}/classes</outputDirectory>
                        <includes>**/*.class</includes>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

1 个答案:

答案 0 :(得分:2)

经过大量的拔毛后,我意识到自己犯了一个非常简单的错误。我现在搬家了

- App
     + src/main/resources/META-INF/resources/module/menu.jsp

到位置

- App
     + src/main/webapp/module/menu.jsp

一切都像预期的那样。