我正在构建一个模块化的 Web 应用程序,它有一些 Spring 组件打包在一个 jar 依赖项(不同的模块)中。这个 jar 还包含一些 JSP 资源,例如:
- 模块 + src/main/resources/META-INF/resources/module/*.jsp
现在我想在我的应用程序中使用以下结构覆盖特定的 JSP。
- 应用程序 + 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>