JavaCVで他環境のjarを除外してwarを作成する

refプログラミング

JavaCVを何もせずにwar作成すると容量が大きくなってしまうのでその対処方法です。

設定なしだと無駄が多い

JavaCVを使用したプロジェクトで何もせずにwarを作成するとandroid-arm、anroid-arm64、android-x86_64、android-x86、ios-*、windows-*、linux-*などと様々な環境用のライブラリが一緒になって出力されます。

ref

こんなのが大量に入るのでwarにしたとき数百MBになります。
私の場合は800MBくらいでした。
使用しないライブラリが大半なのでwar作成時には除外したいところです。
本番環境の転送するときに転送料金とかかかるところだと困りますしね。
今回はLinuxの64ビット環境で動かす用のwarを作成するので必要なのは*-linux-x86_64.jarです。

不要なjarを除外してコンパイル

eclipseからPJ右クリック→実行→Mavenビルドでやってみましたが、これは上手くいきませんでした。
Springのpluginだとちょっと違う?みたい??
なので、仕方なしにmvnコマンドでやりました。
eclipseで作れた方が手間なくて良かったんですが出来なかったので諦めました。
mvn実行時に以下を追加するだけです。

-Djavacpp.platform=linux-x86_64

> cd [プロジェクトのパス]
> C:\apache-maven-3.8.2-bin\apache-maven-3.8.2\bin\mvn.cmd package -Djavacpp.platform=linux-x86_64

windows64ビットだと

windows-x86_64

を指定してください。

warサイズ比較

  • excludeの設定なし
    874,090,496 バイト
  • excludeの設定あり
    133,607,424 バイト

700MBも変わりました。

参考URL

Excluding certain .jars from a Maven dependency from build by classifier - Stack Overflow

コメント

タイトルとURLをコピーしました