Maven Central RepositoryからJarを取得して実行可能なスクリプトに変換する
以下は Ammonite をダウンロードしてスクリプト化する例
$ coursier bootstrap com.lihaoyi:ammonite_2.12.8:1.6.6 -M ammonite.Main -o amm --standalone https://repo1.maven.org/maven2/com/lihaoyi/ammonite_2.12.8/1.6.6/ammonite_2.12.8-1.6.6.pom 100.0% [##########] 2.2 KiB (1.8 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-runtime_2.12/1.6.6/ammonite-runtime_2.12-1.6.6.pom 100.0% [##########] 1.9 KiB (7.7 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-terminal_2.12/1.6.6/ammonite-terminal_2.12-1.6.6.pom 100.0% [##########] 1.5 KiB (8.3 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-ops_2.12/1.6.6/ammonite-ops_2.12-1.6.6.pom 100.0% [##########] 1.5 KiB (3.0 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-repl_2.12.8/1.6.6/ammonite-repl_2.12.8-1.6.6.pom 100.0% [##########] 2.9 KiB (5.1 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-interp_2.12.8/1.6.6/ammonite-interp_2.12.8-1.6.6.pom 100.0% [##########] 2.4 KiB (13.4 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-util_2.12/1.6.6/ammonite-util_2.12-1.6.6.pom 100.0% [##########] 2.0 KiB (11.9 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier_2.12/1.1.0-M13-1/coursier_2.12-1.1.0-M13-1.pom 100.0% [##########] 2.6 KiB (14.6 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.12/1.1.0-M13-1/coursier-cache_2.12-1.1.0-M13-1.pom 100.0% [##########] 1.8 KiB (10.3 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier-core_2.12/1.1.0-M13-1/coursier-core_2.12-1.1.0-M13-1.pom 100.0% [##########] 1.8 KiB (10.2 KiB / s) https://repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.12/1.1.1/scala-xml_2.12-1.1.1.pom 100.0% [##########] 2.7 KiB (15.1 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-repl_2.12.8/1.6.6/ammonite-repl_2.12.8-1.6.6.jar 100.0% [##########] 173.0 KiB (252.9 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-util_2.12/1.6.6/ammonite-util_2.12-1.6.6.jar 100.0% [##########] 173.8 KiB (252.3 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite_2.12.8/1.6.6/ammonite_2.12.8-1.6.6.jar 100.0% [##########] 150.9 KiB (182.1 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-interp_2.12.8/1.6.6/ammonite-interp_2.12.8-1.6.6.jar 100.0% [##########] 321.6 KiB (372.2 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier_2.12/1.1.0-M13-1/coursier_2.12-1.1.0-M13-1.jar 100.0% [##########] 250.7 KiB (696.5 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-ops_2.12/1.6.6/ammonite-ops_2.12-1.6.6.jar 100.0% [##########] 123.3 KiB (163.6 KiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-runtime_2.12/1.6.6/ammonite-runtime_2.12-1.6.6.jar 100.0% [##########] 216.3 KiB (1.1 MiB / s) https://repo1.maven.org/maven2/com/lihaoyi/ammonite-terminal_2.12/1.6.6/ammonite-terminal_2.12-1.6.6.jar 100.0% [##########] 171.8 KiB (411.9 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.12/1.1.0-M13-1/coursier-cache_2.12-1.1.0-M13-1.jar 100.0% [##########] 274.2 KiB (304.7 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier-core_2.12/1.1.0-M13-1/coursier-core_2.12-1.1.0-M13-1.jar 100.0% [##########] 1.5 MiB (1.4 MiB / s) https://repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.12/1.1.1/scala-xml_2.12-1.1.1.jar 100.0% [##########] 540.4 KiB (1.5 MiB / s) $ ./amm Loading... Compiling (synthetic)/ammonite/predef/interpBridge.sc Compiling (synthetic)/ammonite/predef/replBridge.sc Compiling (synthetic)/ammonite/predef/DefaultPredef.sc Welcome to the Ammonite Repl 1.6.6 (Scala 2.12.8 Java 1.8.0_181) If you like Ammonite, please support our development at www.patreon.com/lihaoyi @
スクリプトを見るとシェルスクリプトにバイナリが埋め込まれているのがわかる
$ cat amm | head -n30 #!/usr/bin/env sh nargs=$# i=1; while [ "$i" -le $nargs ]; do eval arg=\${$i} case $arg in -J-*) set -- "$@" "${arg#-J}" ;; esac i=$((i + 1)) done set -- "$@" -jar "$0" i=1; while [ "$i" -le $nargs ]; do eval arg=\${$i} case $arg in -J-*) ;; *) set -- "$@" "$arg" ;; esac i=$((i + 1)) done shift "$nargs" exec java -Dsun.misc.URLClassPath.disableJarChecking $JAVA_OPTS "$@" +N#coursier/bootstrap/launcher/a.classV[WWI80)DEj5Z+(Fzq2Qb~ZvUЮ??з>wK @}g$ K8)aJ%p^ K4 8 H Ȉ␌& ǛoqǻqLJq| ǧq\y9A'C^AQ2'HjQeaztˈ !dHz9* ʸX qAR L()OQ`L<'1%R2N+x# .P.AWS߀ +J8*# `c&5mi?Wj=e_fJ']'uJ}A3u-O'*kYpg=>dgMxl,2wlW\öSa(zJWa9L-dzM~B㱱3 {JGK@U []xQw\U]B!(:ZSOTNڢv8^Vm7:jYK$ոu>2*;$b82Fe\E7ŦӖ#F<0oR:EUvv@M>g+'S)5-F)'':U'ALyDu*q6v-[ M?UM