如何从maven项目中的外部jar读取属性文件

时间:2017-11-20 04:56:12

标签: java maven jar

我是mavenJava的新手。我正在开发一个使用Spring Web框架的大型代码库。我可能缺少基本面,但我已尽力完成项目实施的所有基础知识 对于我正在构建的功能,我有以前保存在src / main / resources中的属性文件 我的maven项目,正在使用此声明从我的名为ReaderClass的类中读取

ReaderClass.class.getResourceasStream("xyz.properties");

现在我将这些文件外化到一个单独的项目中,并用它构建了一个jar。此jar只在名为resource的文件夹下具有属性文件 我已将此jar文件添加为IntelliJ IDE中的依赖项,并希望从此jar中读取属性文件。如果它是.class文件,我会在ReaderClass中使用import语句但是我如何读取属性文件?

其他信息

此外,我不确定这是否是一个问题,但IntelliJ实际上并没有在外部库选项卡中显示jar,但确实在项目结构中的模块部分的依赖项选项卡中显示了我的jar。我想确保这不会影响解决方案。

2 个答案:

答案 0 :(得分:2)

如果您使用的是Spring,请尝试

@Value("${property.name}")
private String property;

从资源文件夹中读取属性。

答案 1 :(得分:-1)

有很多方法可以做到这一点。

假设您的xyz.properties文件如下所示:

a=b
y=z
mykey=myvalue

使用java.util.ResourceBundle

如果您不需要将读取数据作为Properties对象传递,这是最简单的方法。

ResourceBundle rb = ResourceBundle.getBundle("xyz");
System.out.println("a=" + rb.getString("a"));

使用java.util.Properties

更多的工作和一些锅炉,但完成同样的事情。

Properties p = new Properties();
try (InputStream is = getClass().getClassLoader().getResourceAsStream("xyz.properties")) {
   p.load(is);
}
catch (IOException e) {
   // Handle as appropriately.
}
System.out.println("mykey=" + p.getProperty("mykey"));