我正在尝试读取数据库属性文件以初始化我的数据库,而我正在使用maven。所以我在我的pom.xml中指定了以下插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-1</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${basedir}/src/resources/database.properties</file>
<file>${basedir}/src/resources/databaseTest.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
但我不知道如何在代码中正确加载它,我在这里将“/database.properties”作为参数发送到我的加载方法,但它不起作用:
public static DatabaseSetting loadSettings(String dbPropertiesName) {
String dbPropertiesPath = DatabaseSetting.class.getResource
(dbPropertiesName).getPath();
Properties dbProperties = new Properties();
try {
dbProperties.load(new FileInputStream(new File(dbPropertiesPath)));
String host = dbProperties.getProperty("host");
String username = dbProperties.getProperty("username");
String password = dbProperties.getProperty("password");
String databaseName = dbProperties.getProperty("databaseName");
String table = dbProperties.getProperty("table");
return new DatabaseSetting(databaseName, host, username,
password, table);
} catch (IOException e) {
throw new RuntimeException("Error loading database configuration " +
"file.");
}
}
这在IntelliJ中运行良好,但是当我在maven中打包并运行它时,我收到以下错误:
线程“AWT-EventQueue-0”中的异常java.lang.RuntimeException: 加载数据库配置文件时出错。
答案 0 :(得分:1)
我认为你可能误解了Maven属性插件的重点,我认为这里没有必要,但稍后会更多。
随着你发布的一点点,我可以猜测为什么它没有加载属性文件。
抓住的IOException
很可能是FileNotFoundException
。您似乎已将属性文件放在src/resources
中,但按Maven convention,它们应位于src/main/resources
。
将属性文件移动到那里,它们现在应该正确地位于类路径上。此外,可能有一种更简洁的方法来检索属性:
dbProperties.load(DatabaseSetting.class.getResourceAsStream(dbPropertiesName));
Maven Properties插件
因为,您似乎只是尝试从文件加载属性以在运行时使用,因此这里不需要Maven属性插件。按照配置,这个插件只会将属性加载到Maven构建上下文中,但它无助于以任何方式加载程序中的属性。您可以安全地从您的pom中删除插件声明。