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.
加载它们
请注意 C
和 D
中没有同名文件。如果这样做,那么 Java 将选择哪个文件可能有点随机。
我有一个由三个模块组成的应用程序:模块 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.
加载它们请注意 C
和 D
中没有同名文件。如果这样做,那么 Java 将选择哪个文件可能有点随机。