在Java / Gradle中相对于属性文件时找不到文件

时间:2016-12-06 09:31:59

标签: java intellij-idea gradle build.gradle

我的Java项目使用Gradle。在使用任务conf分发应用程序时,我想要包含配置文件夹distZip

这是我目前项目结构的摘录。

src    
|-- dist
    |-- conf
        |-- application.properties
        |-- keystore.jks
        |-- truststore.jks

conf文件夹已成功分发。

在我的main()中,我使用new File("src/dist/conf/application.properties")加载属性,效果很好。

application.properties包含两个属性:

keystore.location = ./keystore.jks
truststore.location = ./truststore.jks

从IntelliJ启动应用程序时,它可以正常运行但在启动分发时无法找到keystore.jkstruststore.jks,因为src/dist/conf不存在,只有conf。< / p>

如何确保找到这些文件?

1 个答案:

答案 0 :(得分:1)

您的 src / dist / conf 文件夹不是java gradle插件(和IntelliJ)的资源文件夹。它只是由应用程序插件(distZip任务)获取。 IntelliJ将执行目录设置为项目的根路径。因此,可以读取 src / dist / conf / application.properties 只是巧合。

将文件从 conf / dist 文件夹移至 src / main / resources processResources任务将找到它们,此文件夹也应该被IntelliJ识别为资源文件夹。您的类路径将以root身份拥有 resource 节点,以便您可以使用绝对类路径来访问您的文件。 (直接样本:new File(YourClass.class.getResource("/dist/application.properties").getFile())

我认为读取 conf / dist 文件夹中的文件需要花费更多的精力,因为它们不属于类路径。