每次开发 Web 应用程序时,您总是会拥有许多希望为最终用户提供服务的静态资源。这些静态文件有多种不同的形式 – 等 – 并且存在许多挑战,以最好地将其融入到您的 Web 应用程序中以实现最简单的开发过程。本文旨在展示一些使用 Maven 插件来简化这些静态资源的开发并将其合并到应用程序中的简单技术。 提供静态资源 假设您已经能够从 Web 应用程序提供静态资源。一般来说,无论您使用哪个框架来构建应用程序,都有支持此功能的标准方法(例如 Spring)使用该mvc:resources标签。此外,假设您使用的是 Servlet 容器(例如 Tomcat),通常情况下您可以提供目录中出现的任何内容,而无需任何额外的配置。
了解静态文件需要在生成的 WAR 文件中的何处结束非常重要,因为这将在本文给出的示例中重复使用。 普通的、未经处理的文件 可以包含的静态资源的最简单形式是完全不需要操作的资源。这些是您编写的文件,然后按原样包含到 Web 应用程序中。包括这些非常简单。您所需要做的就是将文件放入您希望它们出现的适当位置。包含的文件将被复制到 WAR 文件的根目录中,而包含的文件将被复制到然后最终位于 web 应用程序的类路径中。 模板化文件 有时您会发现想要一些普通文件,但要在其中包含从 Maven 构建中获取的扩展属性。例如,工件的版本号是可能包含的常见版本号。
提供静态资源
这可以使用标准 Maven 插件来实现,这些插件已作为构建的一部分使用 – Maven 资源插件和Maven WAR 插件- 所以让我们来看看它们。 Maven 资源插件 无需任何额外配置,Maven 资源插件已用于将目录复制到生成的 JAR 或 WAR 文件中。(请注意,Maven 资源插 WhatsApp 号码数据 件也用于该目录,并且此处提到的所有内容同样适用于该目录)。 但默认情况下,它不会进行过滤,因此需要一些额外的配置来支持这一点。过滤是指在将资源复制到 Web 应用程序时,用正确的值替换静态资源中的特殊占位符的行为。 配置资源过滤的简单方法是将以下配置添加到文件中该块有两个作用: 添加一个新目录,从中复制资源 – 在本例中我们使用 对此目录中的所有资源启用过滤 建议您尽可能将过滤后的资源分开,这样您就不会意外地对不想要的文件执行过滤。
例如,Spring Context 文件通常包含要扩展的属性,这些属性使用完全相同的语法,但您不希望通过此过程进行扩展。 然后通过在文件中添加特殊占位符来实现过滤。这些占位符都以 开始${和结束}。大括号之间是您希望替换到文件中的属性名称。例如,假设您有一个含以下内容的文件然后,在复制到构建的 Web 应用程序中时,它将自动扩展为当前正在构建的项目的组 ID、工件 ID 和版本。 这里可以使用的属性是 Maven Reactor 可用的任何属性。其中包括默认的 Maven 属性、POM 文件中定义的其他属性以及命令行上提供的系统属性。 Maven 战争插件 Maven WAR Plugin 与构建过程的集成程度稍低,因此配置它需要使用配置插件的标准机制。
普通的、未经处理的文件
同样,默认情况下这不会进行任何过滤。和以前一样,您可能希望对选择进行过滤的文件进行选择,以免过多干扰其他源。如果您希望使用与之前类似的设置,其中您有一个完整的目录用于已过滤的资源,另一个目录用于未过滤的资源,则以下配置将 联系人列表 起作用。 和以前一样,我们现在有两个目录,其中的文件将被包含到 WAR 文件中。中的文件将按原样包含,而其中的文件将在复制时被过滤。 或者,您可能希望将所有文件放在一起,并有选择地仅过滤其中的一小部分。这可以通过以下方式实现此版本保留所有文件并有选择地仅过滤指定的文件(在本例中)version.html。这使得跟踪正在使用的文件变得更容易,但缺点是需要指定两次过滤文件的列表 – 一次包含在过滤的文件集中,一次从非过滤的文件集中排除。resource这是需要使用不同标签来表示已过滤和未过滤资源的一个不幸的副作用。
使用 Maven 处理项目资源 CSS 文件 任何 Web 应用程序都不可避免地需要包含级联样式表 (CSS) 文件来描述页面的样式。这些 CSS 文件可以通过多种方式构建,从手工制作并作为简单资源包含在内(如上所述)到使用 CSS 预处理器(例如LESS或SASS )。 较少的 使用LESS Maven 插件可以支持 LESS 文件。LESS 是作为 Javascript 应用程序实现的,LESS Maven 插件通过在运行构建的 JVM 内部执行 Javascript 将其合并到构建中。这个插件比 SASS 稍微简单一些,重量也更轻一些,但 LESS 也是一个稍微简单一点的预处理器,功能较少。