Java - 从不同的 maven 模块读取文件

Java - read files from different maven modules

我有一个由三个模块组成的应用程序:模块 A、模块 B 和模块 C(这是一个 Web 模块)。我正在使用 Maven 构建应用程序。

我实现了以下逻辑:模块 A 使用 Maven 依赖项包含在模块 B 中,模块 B 包含在模块 C 中,也使用依赖项(每个模块都有单独的 pom 文件)。模块 C 是被部署的模块。

在模块 C 中,我想要一个名为 files 的文件夹,其中将包含一些内容文件。这个特定的文件夹将位于 webapp 文件夹下。我希望能够在模块 B 中读取这些文件。

有办法吗?我尝试使用 getClass().getResourceAsStream("files/file_name") 读取文件,但返回值为空。

您应该考虑将所有这些文件放入 /src/main/resources 目录中,以便在部署时允许这些文件位于应用程序类路径中。因此,您可以从 B 模块考虑所有这些文件都在类路径中可用。

显然,您必须考虑将那些文件复制到 /src/main/resources 模块 B 的目录中。

最干净的解决方案:

  • 创建一个新模块D
  • 将文件放入D/src/main/resources/WEB-INF/
  • 添加 D 作为对 B
  • 的依赖

这使得 B 可以将文件作为 class 路径上的资源使用,同时将它们与其他所有内容分开。请注意,要获取文件,您必须使用

getClass().getResourceAsStream("/WEB-INF/...");

否则 Java 将尝试相对于当前 class.

加载它们

请注意 CD 中没有同名文件。如果这样做,那么 Java 将选择哪个文件可能有点随机。