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

时间:2015-03-15 10:10:08

标签: java maven module

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

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

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

有办法做到这一点吗?我尝试用getClass()读取文件.getResourceAsStream(" files / file_name")但返回的值为null。

2 个答案:

答案 0 :(得分:1)

最干净的解决方案:

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

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

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

否则Java将尝试相对于当前类加载它们。

请注意,CD中的文件名称不同。如果你这样做,那么Java会选择哪个文件随机。

答案 1 :(得分:0)

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

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