Executable JAR を作る
Treasure Data の Embulk(http://www.embulk.org/docs/) をインストールして気になったので、メモ。
Embulkがなんなのかはドキュメントを読むとして、インストールするには以下のコマンドを叩くだけではいった。
curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar" chmod +x ~/.embulk/bin/embulk echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
これはjarをローカルに保存してそこにパスを通してるだけなんだけど、jarを直接指定して実行できるというのが妙にかっこいい。
普通jarファイルを実行するときは、 java -jar hoge.jar
みたいな感じですると思う。
でも、以下の方法でexecutableな jarを作成することができる。
手順としては、
#!/bin/sh MYSELF=`which "$0" 2>/dev/null` [ $? -gt 0 -a -f "$0" ] && MYSELF="./$0" java=java if test -n "$JAVA_HOME"; then java="$JAVA_HOME/bin/java" fi exec "$java" $java_args -jar $MYSELF "$@" exit 1
を、executableにしたいjarの先頭に追加するだけ。
上記をstub.shなどとして保存して、 cat stub.sh hoge.jar > hoge.run
とすると良い。
ちなみに、embulkのjarは、その先頭の END_OF_EMBULK_SELFRUN_BATCH_PART
というセクションにMS-DOSのコマンドも書いてあり、
さすがですねと思った。