如何将 Open Liberty 开发模式与我的 Maven WAR 项目一起使用,并从我的项目外部(例如从我的本地计算机)包含 JavaScript 和 CSS 文件?

How can I use Open Liberty dev mode with my Maven WAR project and include JavaScript and CSS files from outside my project (eg from my local machine)?

我有一些 JavaScript 和 CSS 文件不属于我的 WAR 模块源存储库。它们也没有打包在 Maven 依赖项中。我分别将它们解压缩到本地系统上的路径。

我如何在我的 Maven WAR 应用程序中使用这些资源并仍然利用自由 dev mode 进行快速、迭代开发?

要包含来自典型 src/main/webapp 目录以外的位置的 Web 资源,请配置 属性 和 maven-war-plugin 以及 <webResources> 参数如下:

pom.xml

  ...
      <properties>
          <webResDir>/path/to/js-css</webResDir>
      <properties>
  ...
      <build>
        <plugins>
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>${webResDir}</directory>
                       </resource>
                    </webResources>
                    <!-- I recommend this config which does a better job of removing any deleted/outdated resources, as of v3.3.2 -->
                    <outdatedCheckPath>/</outdatedCheckPath>
                </configuration>
            </plugin>

注意事项

虽然基本思想仍然适用于早期版本,但您将获得推荐的最低版本的更好体验:

先决条件最低版本

  • maven-war-plugin 的 3.3.2 版 (添加了对显示的过时 CheckPath 语法的支持)
  • liberty-maven-plugin 的 3.5.2 版 (添加了对过滤 Web 资源的支持)

PLUGIN-LEVEL 配置

还要注意 maven-war-plugin 配置 应该在插件级别添加 以便 liberty 开发模式访问它, 而不是在级别在 maven-war-plugin.

下定义的执行

属性 覆盖

与一般的 Maven 项目属性一样,现在可以覆盖它:

  • 在 command-line 上:mvn -DwebResDir=/some/path ... <goals, phases>
  • 在 settings.xml 中(如果您的 host-specific 位置在从该系统访问的多个项目之间共享,则特别有用),例如查看 Maven Settings documentation

参考资料

此处有更多示例:https://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html