在maven构建期间构建HTML页面

时间:2012-05-30 19:08:22

标签: maven

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

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

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

3 个答案:

答案 0 :(得分:2)

经过多次调查,我确定最好的选择是编写我自己的maven插件。我有一个简单的.html模板,其中包含有关将HTML和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生命周期的“generate-sources”阶段运行,该阶段获取模板并用{{1}的相应列表替换$cssIncludes$$jsIncludes$ }和<script>标签。 (注意:我使用antlr stringtemplate Java库作为插件的依赖项。)

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

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

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

答案 1 :(得分:2)

如果maven资源插件(来自filteringproperties files)不够,也许您可​​以使用freemaker或velocity maven plugins生成您的网页。

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

答案 2 :(得分:0)

基于Google i found a Maven Plugin的短搜索,可以用来进行压缩。因此,正如您已经提到的那样,使用不同的配置文件来压缩或不压缩文件或仅保留文件而不进行压缩是没有问题的。