2012-10-10 17 views
9

mavenプラグインはとても遅く動作します。私のプロジェクトでは、webappフォルダには、約15000個の小さなファイル(画像、JSP、CSSなど)があります。 mavenと組み立てると、最初にすべてのファイルがtarget/myProject-1.0.0ディレクトリにコピーされ、そこからファイルmyProject-1.0.0.warが作成されます。コピー処理には10分かかり、.warには2分かかります。maven warプラグインをスピードアップ

.warファイルをwebappフォルダから直接アセンブルすると、ビルドがずっと高速になる可能性があります。それは可能ですか?

+0

'src/main/webapp'フォルダから直接ですか?次に、統一性、リソースなどはどうですか? – maba

+0

@maba確かに、どうしてですか? jar.exeは複数の場所からファイルをアーカイブできます。 antタスク ''は簡単にやります。 – kan

+0

これはメイベンの方法ではありません。そのantタスクを使用するには、['maven-antrun-plugin'](http://maven.apache.org/plugins/maven-antrun-plugin/)を使用できます。 – maba

答えて

4

maven-antrun-pluginタスクと一緒にwar:inplaceゴールのmaven-war-pluginを使用することをお勧めします。

war:inplaceは、WARソースディレクトリにwebappを生成します。 webappの下に必要なすべての余分なフォルダが作成されます。

antrun:runは、特別な要件に応じて戦争を作成するようにカスタマイズすることができます。

これらのリソースファイルのほとんどはまだwebappフォルダにあり、コピーされないため、パフォーマンスが向上する可能性があります。

+0

それは不条理なコピーを保存しますが、war:inplaceはすべてのライブラリをWEB-INF/libにコピーします。これは不必要で面倒です。誰かが実際にこれを試してみましたか? –

3

useCacheという設定があり、パフォーマンスが大幅に向上することが言及したいだけです(12ではなく3分)。しかし、それは開発だけのためであって、常にクリーンビルドを行うべきCIサーバのためではない。

+1

ここで説明した内容を達成したMaven設定を含めることができますか? –

1

warプラグインの設定セクションで、warSourceExcludesを使用して不要なファイルとディレクトリを除外します。以下の例では、ディレクトリのコンポーネントとnode_moduleは、展開された戦争だけでなく、最終戦争からも除外されます。私の場合、これはビルド時間を3分から14秒に短縮しました。

 <configuration> 
       <warSourceExcludes> 
       components/**, 
       node_modules/** 
       </warSourceExcludes> 
     </configuration> 
関連する問題