本节基于Quarkus系列-项目创建的grocery代码,或直接克隆本文末代码。
Quarkus默认构建Fast Jar包,即项目代码和依赖相分离,也可以在配置文件(application.properties)明确使用Fast Jar构建,如下:quarkus.package.type=fast-jar
quarkus-app是核心目录,编译后的代码打包在app下的grocery-1.0.0-SNAPSHOT.jar,该文件在target根目录也有一份。项目依赖在lib目录,项目可执行文件在quarkus目录,最后quarkus-run.jar是可执行文件。所以部署项目必须拷贝整个quarkus-app目录。Fast Jar模式将可执行文件和依赖相分离,它通过依赖索引(quarkus-app-dependencies.txt)加载依赖,避免遍历所有jar包,所以启动速度快,消耗内存少。将grocery-1.0.0-SNAPSHOT.jar解压后如下图,可以看到它仅包含java类和资源文件,不包含依赖,所以不能直接运行。java -jar target/quarkus-app/quarkus-run.jar
2. 构建Uber Jar包
Uber Jar也叫Thin Jar包,或Legacy Jar,即项目代码和依赖打包在一个文件,可以直接执行,Springboot默认使用这种模式。quarkus.package.type=legacy-jar
java -jar ./target/grocery-1.0.0-SNAPSHOT-runner.jar
完整代码:
https://gitee.com/geekstower/quarkus-tutorial/tree/master/grocery-init