2

Maven を使用して HTML Web アプリケーションを作成しています。デバッグ用のプロファイルとリリース用の別のプロファイルがあります。デバッグ プロファイルでは、圧縮されていない Javascript を HTML ページで使用したいと考えていますが、リリース プロファイルでは、すべての Javascript ファイルを連結してから、Google の Closure コンパイラを使用して圧縮します。

<script>したがって、基本的には、選択したプロファイルに基づいて HTML ページにタグとして書き出す必要がある Javascript ファイルのリストが 2 つあります。

必要に応じて HTML ファイルを生成できるさまざまなプロファイルのさまざまなリストで構成できる Maven プラグインはありますか?

4

3 に答える 3

2

多くの調査の結果、最善の選択肢は独自の Maven プラグインを作成することであると判断しました。CSS および JS タグを HTML に挿入する場所に関するディレクティブを含む単純な .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 ライフサイクルの「generate-sources」フェーズで実行される Maven プラグインを用意します。このプラグインは、テンプレートを取得し、$cssIncludes$andを適切なandタグ$jsIncludes$のリストに置き換えます。(注:プラグインの依存関係としてantlr stringtemplate Java ライブラリを使用しています)。<script><link>

独自のプロジェクトであるため、実際のプラグインを投稿することはできませんが、AbstractMojo から拡張された単一の Java クラスです。

  • POMから @parameter読み取るプロパティがあります<configuratioon>
    • html テンプレートの場所
    • 出力ファイルの場所
    • JS ファイルのリスト
    • CSS ファイルのリスト
  • 実行中に
    • ファイルから html テンプレートを読み取り、文字列として保存します
    • org.antlr.stringtemplate.StringTemplatehtml テンプレートからを作成します
    • デフォルトを使用しますorg.antlr.stringtemplate.language.DefaultTemplateLexer
    • <script>および<link>タグを文字列として作成する構成から JS および CS ファイルをループします。
    • template.setAttribute構築された文字列を $cssIncludes$ および $jsIncludes$ にバインドするために使用します
    • テンプレートをファイルシステムに書き込みます

それは非常にうまく機能します。現在の Maven プロファイルに基づいて、JS ファイルと CSS ファイルの別のリストをプラグインに送信するだけです。

于 2012-05-31T20:57:32.527 に答える
2

Maven リソース プラグイン (プロパティ ファイルからのフィルタリングを使用) では不十分な場合は、Freemaker またはVelocity Maven プラグインのいずれかを使用してページを生成できます。

私は速度プラグインを使用して、Maven jasmine プラグインを使用して JS コードをテストするための 1 つの HTML ページと、本番環境用の別の HTML ページを生成しました。コードは近日公開予定です。必要な場合は、ping を送信してください。リンクを追加することを忘れないでください。

于 2012-07-02T18:01:54.960 に答える
0

Googleでの短い検索に基づいて、圧縮を行うために使用できるMavenプラグインを見つけました。したがって、これに基づいて、すでに述べたように、圧縮するかどうか、または圧縮せずにファイルを残すだけで、異なるプロファイルを使用することは問題ありません。

于 2012-05-30T21:55:53.177 に答える