运行 Maven 构建时如何访问 JAR 中的文件

How to access file in a JAR when running a Maven build

我想 运行 通过 liquibase-maven-plugin 进行 liquibase 更新,但是变更集 yml 文件位于我通过依赖项引入的 .jar 中。

当我使用 TotalCommander 打开 .jar 时,它具有以下结构: xy.jar/changelog/changeset.yml.

我尝试将其作为资源目录包含在内,但未能告诉我 .jar 不是目录。

我还尝试构建 WAR 并将 liquibase changeLogFile 属性 设置为通往 .jar 的路径,例如 {projectDir}/target/..war /..lib/..jar/changelog/myFile.yml 但是maven这样找不​​到。

是否可以通过某种方式访问​​此文件?

您可以使用以下代码读取文件。

InputStream inputStream = getClass().getClassLoader().getResourceAsStream("changelog/myFile.yml");

感谢您的回复,但解决方案更简单,我只是在这方面生疏了 :) 我只需要从 WAR 添加所需的 JAR 作为 Maven 依赖项。这会将 JAR 的内容添加到 Maven 构建过程中的类路径,因此我可以在项目根路径上引用它的文件。

TLDR:在 pom 中添加 JAR 作为依赖项并使用路径:

<changeLogFile>changelog/xy.jar</changeLogFile>