依赖jar不加载自己的资源文件

时间:2015-04-24 17:18:36

标签: java properties jar build gradle

我有一个依赖项utilities.jar,在编译时在根目录中有一个dev.properties文件(在未编译时在src/main/resources中)。 jar有一个类(PropertiesUtil.java),用于加载属性:

PropertiesUtil.class.getResourceAsStream("/dev.properties");

此jar包含在我的webapp中作为依赖项。编译时,webapp在其根目录中有自己的dev.properties文件(在src/main/resources文件夹中以未编译的形式)。

utilities.jar不会加载自己的内部dev.properties文件,而是加载webapp的dev.properties文件。

我尝试了不同的方法,比如

PropertiesUtil.class.getClassLoader.getResourceAsStream("dev.properties");

没有成功。

我正在使用Gradle将utilities.jar和webapp编译成战争。属性filename必须相同,因为我传入了一个JVM属性

-Dproperty.filename=[dev|qa|prd].properties 

启动webapp时。此系统属性用于加载webapp和utilities.jar的正确属性文件。

utilities.jar是一个单独的项目,与gradle clean build打包并上传到工件服务器。在构建战争时,webapp从工件服务器中提取utilities.jar

1 个答案:

答案 0 :(得分:0)

我认为这个问题正在发生,因为你有两个不同的文件在你的类路径中有完全相同的路径(即使一个在jar中)。很可能一个Address被覆盖。

我建议将至少一个属性文件的路径更改为项目根目录之外。例如,将实用程序的未编译dev.properties放在:

dev.properties

然后使用:

访问它
/src/main/resources/utilities/dev.properties

然后这两个属性文件将不再相互踩踏,这应该可以解决您的问题。