2012-04-19 16 views
3

指があなたを助けてくれます!WARを構築する前にMavenで生成されたファイルの名前を変更してください

私はSmartSpritesを使用して、自分のリンク先ページのPNGを1つに結合するので、読み込みが高速になります。

SmartSpriteはCSSファイルを検査し、CSSスプライトイメージを生成し、オリジナルの代わりにこのスプライトイメージを使用する新しいCSSファイルを作成します。私がしたいのは、私のMaven WARビルド中に元のCSSファイルをSmartSpriteファイルに自動的に置き換えることです。

  1. SmartSpriteは私のCSSファイルをスキャンします:

    だからここは私が起こるしたいものだスプライト画像を作成mystyle.css

  2. SmartSpriteを、そして新しいMyStyleは-sprite.cssを作成ファイル。新しいスプライトイメージを参照します。
  3. 私はWARが構築される前に、私はJSPファイルの私の参照を変更する必要がないように、MyStyleは-sprite.cssオーバーmystyle.cssをコピーしたいです。

両方のファイルは出力ディレクトリ(target/myproj/css)にあります。 SmartSpriteには元のファイルを上書きするフラグはないようですので、後処理を行う必要がありました。

以下は、SmartSpriteに使用しているmavenプラグインの設定です。

 <plugin> 
      <groupId>org.carrot2.labs</groupId> 
      <artifactId>smartsprites-maven-plugin</artifactId> 
      <version>1.0</version> 
      <executions> 
       <execution> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>spritify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

答えて

2

あなたはMaven WAR pluginを使用することができます。

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <webResources> 
      <resource> 
       <directory><!-- Your output directory --></directory> 
       <targetPath><!-- The target location of the files below --></targetPath> 
       <includes> 
        <include><!-- file pattern --></include> 
        <include><!-- file pattern --></include> 
       </includes> 
      </resource> 
     </webResources> 
    </configuration> 
</plugin> 

あなたはまた、元のCSSファイル名を維持するために別の出力ディレクトリを使用するようにSmartSpritesを設定する必要があります。空のcss-file-suffix値を使用してoutput-dir-pathオプションを試してください。

+0

こんにちはATES、どのように私はMyStyleはにMyStyleは-sprite.cssからファイル名を変更します.cssリソースを使用して?私は、ファイルを含めるか除外することしかできないと思っていましたが、転送中に名前を変更することはできませんでした。 –

+0

@JohnFarrelly私の答えを更新しました。別の出力ディレクトリ(WARのデフォルトスクラッチ領域とは異なるディレクトリ)を使用してみてください。 –

+0

そして、そうです、これはうまくいくでしょう。私は若干異なるシナリオ(JS + CSSファイルのRequireJS最適化)のためにこのメソッドを使用しています。 –

18

私はあなたがこのような何かとMavenのAntRunプラグインよりも単純またはよりエレガントな何かを見つけることができません怖い:

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
     <execution> 
      <phase>prepare-package</phase> 
      <configuration> 
      <target> 
       <copy file="${project.build.directory}/mystyle-sprite.css" 
       tofile="${project.build.directory}/mystyle.css" /> 
      </target> 
      </configuration> 
      <goals> 
      <goal>run</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 
+1

コピーする代わりにファイルを移動する必要があります。あなたは最終的なWARにビルドアーティファクトを残したくないです。 –

+0

問題ありません。 ''タスクを ''に置き換えてください。問題はコピーについてでした。 –

+0

アセンブリを使用せずにファイルの名前を変更することについては、これは受け入れられる回答でなければなりません。 – Gunnar

関連する問題