如何将指定资源文件排除在Quarkus fast jar包外?
如何将指定SQL迁移文件排除在Quarkus Fast Jar打包范围外
要实现把src/main/resources/db/migration/V1.0.0_Quarkus.sql排除出Fast Jar打包,同时部署时使用文件系统指定路径的文件,按以下步骤操作:
1. 从Maven资源配置排除目标文件
Fast Jar打包会包含target/classes下的所有资源,所以第一步要确保编译阶段不把这个SQL文件复制到输出目录。直接修改pom.xml的<build>节点,添加资源排除规则:
<build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>db/migration/V1.0.0_Quarkus.sql</exclude> </excludes> </resource> </resources> <!-- 保留原有的其他build配置 --> </build>
2. 部署时指定外部迁移文件路径
以Quarkus默认的Flyway数据库迁移为例,有两种常用方式让应用加载外部文件系统的迁移文件:
方式一:启动时通过JVM参数指定
启动Fast Jar包时,添加系统参数指定外部迁移目录:
java -Dquarkus.flyway.locations=filesystem:/opt/app/migration -jar your-app-fast-jar.jar
开发环境测试时,也可以直接在Dev模式下加参数:
./mvnw quarkus:dev -Dquarkus.flyway.locations=filesystem:/local/dev/migration
方式二:通过配置文件固定路径
如果部署环境路径固定,可在application.properties里直接配置:
quarkus.flyway.locations=filesystem:/opt/app/migration
不过这种方式灵活性较差,建议优先用JVM参数的方式,方便不同环境切换路径。
3. 验证配置是否生效
执行Fast Jar构建命令:
./mvnw package -Dquarkus.package.type=fast-jar
构建完成后,检查target/classes/db/migration目录,确认V1.0.0_Quarkus.sql不在其中;启动应用时,观察日志确认Flyway加载了外部路径的迁移文件并执行成功。
内容的提问来源于stack exchange,提问作者Jaiprasad
相关产品推荐
相关产品推荐

