我的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.jks
和truststore.jks
,因为src/dist/conf
不存在,只有conf
。< / p>
如何确保找到这些文件?
答案 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 文件夹中的文件需要花费更多的精力,因为它们不属于类路径。