我想在我的Maven项目中使用一个小程序作为依赖项。该程序由属性文件配置,可在执行之前进行编辑。到目前为止,我已将依赖项添加为本地存储库中的JAR。
现在我想在我自己的高级类路径中访问该依赖项的属性文件,即myprogram/src/main/resources/config/myprogram.properties
中的myprogram/local-repository/com/example/mydependency/mydependency.jar/mydependency.properties
和
我尝试修改定义属性文件路径的代码部分:
public example() {
Properties prop = new Properties();
InputStream input = example.class.getResourceAsStream("/config/myprogram.properties");
prop.load(input);
...
}
在将依赖项添加到本地存储库之前,我还删除了该依赖项的原始属性文件。
整个计划正在运作,但并不像预期的那样。奇怪的是,我使用/src/main/resources/config
中的新属性文件和mydependency.jar
中的旧属性文件都没有使用。似乎某种默认属性文件被放入我最后的胖JAR中。但我无法在任何地方找到它的来源 - 即使我尝试调试它。这个默认属性文件似乎无处不在。
现在,我如何正确地将依赖项的属性文件移动到我自己的类路径?
这个默认属性文件从哪里出现?
这是Maven的问题还是源代码本身的问题?
提前致谢!
答案 0 :(得分:0)
您可以这样做:
public static String getValueFromDependencyProps(ClassLoader cl, String propertiesFile, String key) throws IOException {
Properties prop = new Properties();
prop.load(cl.getResourceAsStream(propertiesFile));
String value = prop.getProperty(key);
if (value == null)
throw new NullPointerException();
else
return value;
}
然后:
String value = getValueFromDependencyProps(YourDependencyClass.class.getClassLoader(), "your.properties", key);
经过测试和工作。通过它,我可以从外部Maven依赖项(使用其中一个类YourDependencyClass
)访问任何属性文件,以便访问它。