如何在属性文件中写入相对路径

Posted

技术标签:

【中文标题】如何在属性文件中写入相对路径【英文标题】:How to write relative paths within a properties file 【发布时间】:2016-02-27 12:56:26 【问题描述】:

我浏览了整个网站,但没有任何答案。 我想知道如何在 .properties 文件中编写相对路径。 这适用于使用 Maven 和 STS IDE 的项目。

我的 .properties 文件本身被找到并且可以正常阅读。但是,我试图在文件本身中创建一个相对路径,但它不起作用。

在 .properties 文件中我有这个条目:

XML_PROPERTIES=C:/projects/myProject/project-server/project-webapp/src/main/config/gs/myXmlFile.xml

我想在这里使用相对路径。我试过了:

XML_PROPERTIES=../myXmlFile.xml

XML_PROPERTIES=../src/main/config/gs/myXmlFile.xml

这些都不起作用。

我也试过用表达式语言来获取项目目录是这样的:

XML_PROPERTIES=$basedir/src/main/config/gs/myXmlFile.xml

唯一有效的是完整路径。没有它,我会收到类似于以下内容的错误:

Java Global Settings: XML properties file [../src/main/config/gs/agl_gs_NT.xml] not found.

如果我可以提供更多详细信息,请告诉我,感谢任何回复。

【问题讨论】:

恐怕少了点什么。相对路径是什么?属性只是字符串。您要解决的相对路径是什么?进程的工作目录?如果您可以发布一些代码,那将会很有帮助。 谢谢,丹尼尔。它与项目在计算机上的存储位置有关。您可以看到有效的路径以“C:/projects”开头,我希望属性文件中的路径相对于加载到 STS 中的 Web 应用程序项目,方法是将其作为 Maven 项目检出颠覆。如上所述,完整路径可以正常工作,但我希望相对于项目的路径可以正常工作,以便用户无需手动更改路径以匹配他们决定存储项目的位置。 您不想使用 Classloader 为您加载 XML 文件?大多数框架(尤其是 Spring)能够加载文件,而无需直接从文件系统加载文件。 src/main/config 是否在 POM 中声明为资源目录? 由于无法进入此处的原因,我必须通过 .properties 文件加载此文件。这是我的组织的方式。为开发人员自动构建 maven 项目。 【参考方案1】:

使用 maven 资源插件 filter 你的属性值。 Maven 有几个内置的properties 应该允许您插入正确的路径。

【讨论】:

以上是关于如何在属性文件中写入相对路径的主要内容,如果未能解决你的问题,请参考以下文章

如何将arcgis的mxd文档存储为相对路径

pb如何设置图片相对路径

Bash:从作为输入给出的相对路径中获取绝对路径

模块内的相对文件系统写入路径

使用相对于配置文件的路径引用 Spring 属性文件

如何在基于xml的spring配置中为hibernate.javax.cache.uri属性指定相对路径