【问题标题】:How do I filter overlayed WAR resources when building a WAR with Maven?使用 Maven 构建 WAR 时如何过滤覆盖的 WAR 资源?
【发布时间】:2011-03-24 17:50:33
【问题描述】:

我有两个战争:

  1. 基础叠加
  2. 示例应用

base-overlay 在src/main/webapp/WEB-INF/spring/*.xml 中有 XML 配置文件。在这些 XML 配置文件中,我有在构建示例应用 WAR 时需要过滤的参数,这取决于基础覆盖作为其覆盖。例如,base-overlay/src/main/webapp/WEB-INF/spring/app-context.xml 中包含 ${data.url}。在打包示例应用 WAR 时,我设置了 POM 属性 <data.url>http://example.com:1234</data.url> 来替换 base-overlay 的 ${data.url}

当我配置 maven-war-plugin 来过滤这个文件时,我必须给它一个 target/war/work/com.example/base-overlay/WEB-INF/spring 的目录,只是为了在将它添加到新打包的 example-app WAR 之前找到要过滤的 app-config.xml 文件。这似乎是一种 hack,并且在使用 Jetty 进行测试时也不起作用,因为没有创建和过滤 WAR。

此外,POM 的 <build/> 元素有一个 <resources/> 元素,但我无法让它工作。

编译时如何过滤overlay资源?

【问题讨论】:

  • 也许你应该发布example-app的相关pom sn-p。

标签: resources filter maven overlay pom.xml


【解决方案1】:

为了解决这个问题,我将所有 XML 资源 (Spring) 移动到适当的 Maven 资源目录 ${basedir}\src\main\resources\,然后将其添加到 POM 中的 <build/> 元素中,例如:

<resources>
    <resource>
        <directory>${basedir}/src/main/resources/</directory>
        <filtering>true</filtering>
    </resource>
</resources>

我在基础覆盖 WAR 中包含了不需要过滤的常见 XML 资源。在每个使用 base-overlay WAR 的应用程序中,我添加了一个名为 filtered-resources.xml 的 XML 文件,每次应用程序 WAR 被 Jetty 打包和组装时都会对其进行过滤。

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2012-09-25
    • 2012-01-19
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多