2016-12-06 2 views
1

В моем проекте Java используется Gradle. Я хотел бы включить папку конфигурации conf при распространении приложения с заданием distZip.Файлы не найдены, если относительно файла свойств в Java/Gradle

Это отрывок из моей нынешней структуры проекта.

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 он работает Finde, но при запуске распределение не может найти keystore.jks и truststore.jks потому src/dist/conf не существует, но только conf.

Как я могу убедиться, что эти файлы найдены?

+0

Разве Gradle или Java не найти эти файлы? –

+0

Сама Java не может их найти. –

+0

Вы пытались использовать абсолютный путь? Просто для тестирования –

ответ

1

Ваша src/dist/conf папка не является папкой ресурсов для плагина java gradle (и IntelliJ). Он просто подхвачен плагином приложения (задание distZip). IntelliJ устанавливает каталог выполнения в корневой путь проекта. Таким образом, это просто совпадение, которое можно прочитать в файле src/dist/conf/application.properties.

Переместить файлы в из Conf/дист папку в SRC/основные/ресурсы и они будут найдены в processResources задачи и эта папка также должны быть признаны IntelliJ в папке ресурсов. У вашего класса path будет ресурс узел как пользователь root, так что вы можете использовать абсолютный путь к классам для доступа к вашим файлам. (Прямолинейный образец: new File(YourClass.class.getResource("/dist/application.properties").getFile()))

Я думаю, что это займет гораздо больше усилий, чтобы читать файлы в Conf/DIST папки, поскольку они не являются частью пути к классам.