java - 在eclipse tomcat上发布过滤后的web.xml

标签 java eclipse maven tomcat maven-profiles

我有一个使用 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 根路径:

  1. 在 Eclipse 中关闭您的项目。
  2. 在外部编辑器中打开 <project>/.settings/org.eclipse.wst.common.component文件。
  3. 设置defaultRootSource作为:

  4. 在外部编辑器中打开 <project>/pom.xml文件。

  5. <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>
    
  6. 在 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/

相关文章:

java - 将数字放入数组

macos - Java Web Start in 10.8.2 with native (Apple) Java 1.6 找不到 JRE

java - 如何将字符串存储到 HashMap /哈希表中?

Java Riak 连接问题

java - 在 Eclipse 中选择一行的快捷方式?

java - Maven 版本 : 403 Forbidden

java - WildFly 应用程序开发 : how to reflect the runtime classpath at development time?

java - 如何使用 JAVA 在 MATLAB 中进行显式多线程处理?

java - 无法解析 com.google.cloud.ServiceOptions$Builder 类型。它是从所需的 .class 文件间接引用的

maven - gradle依赖关系返回一个rar文件,而不是jar文件