2

我正在使用 Maven 构建一个 HTML webapp。我有一个用于调试的配置文件和另一个用于发布的配置文件。在调试配置文件中,我希望在 HTML 页面中使用未压缩的 Javascript,但在发布配置文件中,我连接所有 Javascript 文件,然后使用 Googles Closure 编译器压缩它们。

所以基本上我有 2 个 Javascript 文件列表,我需要根据选择的配置文件将它们作为标签写到<script>HTML 页面中。

是否有一个 Maven 插件,我可以为不同的配置文件配置不同的列表,这些配置文件可以根据需要生成 HTML 文件?

4

3 回答 3

2

经过大量调查,我确定最好的选择是编写我自己的 Maven 插件。我有一个简单的 .html 模板,其中包含有关将 CSS 和 JS 标记插入 HTML 的位置的指令:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Fifa Social - Hello World</title>
  <meta name="description" content="Hello World app for Fifa Social">

  <meta name="viewport" content="width=device-width">

  $cssIncludes$
  $jsIncludes$

</head>
<body>
    <p>Page content</p>
</body>
</html>

然后,我有一个在 Maven 生命周期的“生成源”阶段运行的 Maven 插件,它采用模板并用适当的和标签列表替换$cssIncludes$and 。(注意:我使用antlr stringtemplate Java 库作为插件的依赖项)。$jsIncludes$<script><link>

我不能发布实际的插件,因为它是一个专有项目,但它是从 AbstractMojo 扩展的单个 Java 类

  • 它具有从 POM @parameter中读取的属性<configuratioon>
    • html模板的位置
    • 输出文件的位置
    • JS文件列表
    • CSS 文件列表
  • 在执行期间
    • 从文件中读取 html 模板并将其存储为字符串
    • org.antlr.stringtemplate.StringTemplate从 html 模板创建一个
    • 使用默认的org.antlr.stringtemplate.language.DefaultTemplateLexer.
    • 循环遍历配置中的 JS 和 CS 文件,将<script>and<link>标记创建为字符串
    • 用于template.setAttribute将构建的字符串绑定到 $cssIncludes$ 和 $jsIncludes$
    • 将模板写入文件系统

它工作得很好。我只是根据当前的 Maven 配置文件向插件发送不同的 JS 和 CSS 文件列表。

于 2012-05-31T20:57:32.527 回答
2

如果 maven 资源插件(从属性文件过滤)还不够,也许您可​​以使用 freemaker 或velocity maven 插件之一来生成您的页面。

我使用velocity插件生成一个HTML页面来测试我的JS代码和maven jasmine插件,以及另一个用于生产的HTML页面。代码将很快发布。如果你需要它请ping,所以我会记得添加链接。

于 2012-07-02T18:01:54.960 回答
0

基于通过 Google 进行的简短搜索,我发现了一个可用于压缩的 Maven 插件。因此,基于此,正如您已经提到的那样,拥有不同的配置文件来压缩或不压缩或只保留文件而不压缩是没有问题的。

于 2012-05-30T21:55:53.177 回答