Spring Bootで実行可能jarを作成する
実行可能jarを作成する
Spring Bootでは実行可能なjarを作成できます。
これはwarファイルをWebアプリケーションサーバにデプロイするといった面倒な作業を省き、java -jar
でWebアプリが起動できることを意味します。
実行可能jarの作り方は簡単です。 以下のコマンドを実行するだけです。
./mvnw clean package
以下のようなエラーが出たときはコンパイルのバージョンが異なっています。
$ ./mvnw clean package Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/wrapper/MavenWrapperMain : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Javaの対応表は以下の通り。
J2SE 8 = 52, J2SE 7 = 51, J2SE 6.0 = 50, J2SE 5.0 = 49, JDK 1.4 = 48, JDK 1.3 = 47, JDK 1.2 = 46, JDK 1.1 = 45
以下の記事が参考になります。 http://qiita.com/iwag@github/items/3f749010f0981195e2ba
java -version
で1.7以上を指定しても、mavenが見ているJavaが1.6だとエラーが出ます。
maven実行前にJAVA_HOMEを指定する必要があります。
$ JAVA_HOME=`/usr/libexec/java_home -v 1.8` ./mvnw clean package
これでjarを作成することができました。
[INFO] --- spring-boot-maven-plugin:1.4.3.RELEASE:repackage (default) @ demo --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 18.982 s [INFO] Finished at: 2017-01-02T11:59:45+09:00 [INFO] Final Memory: 29M/267M [INFO] ------------------------------------------------------------------------
targetディレクトリ以下にjarができています。