我有一个使用 Eclipse 开发的 Maven Web 应用程序,在我的 pom.xml
文件中我定义了 2 个不同的配置文件:生产和开发,具有不同的属性。当我执行 clean install
来创建我的 WAR 包时,多亏了我的 maven-war-plugin
中的 filteringDeploymentDescriptors
我设法拥有一个已解析的 web .xml 并正确替换了所有属性。
问题是当我将我的 webapp 发布到我正在使用的内置 Eclipse tomcat 时,web.xml
根本没有被解析,我拥有所有原始属性名称。
我已经在我的开发配置文件中将 activeByDefault
设置为 true 并且我还设置了 Active Maven 配置文件(Properties >> Maven),但我仍然无法让它工作。
最佳答案
我想到了这个解决方案:
想法是为 Eclipse 更改应用程序的 Web 根路径:
- 在 Eclipse 中关闭您的项目。
- 在外部编辑器中打开
<project>/.settings/org.eclipse.wst.common.component
文件。 设置
defaultRootSource
作为:在外部编辑器中打开
<project>/pom.xml
文件。在
<build>
内添加标签:<resources> <resource> <directory>src/main/webapp</directory> <filtering>false</filtering> <targetPath>../../target/m2e-wtp/web-resources</targetPath> <excludes> <exclude>WEB-INF</exclude> </excludes> </resource> </resources>
在 Eclipse 中打开您的项目并尝试。
通过这种方案,您可以让 Eclipse 自动构建您的项目,并且在每次构建时它都会调用 Maven 来进行资源过滤。然后,Maven 进行双重过滤:
- web.xml(由
filteringDeploymentDescriptors=true
提供)。 - 其余的
src/main/webapp
文件(通过<resources>
标签)。 ... 结果将输出到target/m2e-wtp/web-resources
目录,现在是Eclipse希望找到网络资源的地方。
警告:只有一个缺点:您不应从src/main/webapp
执行您的JSP。 ,因为那不再是 Web 容器目录。相反,您应该打开浏览器并输入要打开的 URL。
我在打开“自动构建”的情况下进行了尝试,它成功了:我执行了一个从 web.xml
读取初始化参数的 JSP。 ,我还执行了 clean package
它产生了一场正确的 war 。
关于java - 在eclipse tomcat上发布过滤后的web.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44032862/