2016-12-24 2 views
0

Я пытаюсь настроить проект Gradle Java, но по какой-то причине я не могу зарегистрировать папку ресурсов в сборке. Всякий раз, когда я пытаюсь записать файл, он записывается в корневой каталог проекта, а не в папку ресурсов.Настройка папки ресурсов в проекте Java Gradle

Мой каталог проекта выглядит следующим образом:

  • в исходные тексты
    • основные
      • Java
      • ресурсы

Вот мой build.gradle файл

apply plugin: 'java' 
apply plugin: 'application' 

repositories { 
     mavenCentral() 
} 

mainClassName='Test' 


sourceSets { 
     main { 
       java { 
         srcDirs= ["src/main/java"] 
       } 
       resources { 
         srcDirs= ["src/main/resources"] 
       } 
     } 
} 

А вот мой Test.java, что я использую, чтобы увидеть, если я могу получить доступ к папке ресурсов

import java.io.*; 

public class Test { 

     public static void main(String[] args) throws Exception { 

       FileWriter writer = new FileWriter(new File("Test.txt")); 
       writer.write("Test"); 
       writer.close(); 

     } 

} 
+0

странный способ проверить доступ. поместите файл «1.txt» в папку ресурса, затем попробуйте вызвать Test.class.getResourceAsStream («/ 1.txt»), чтобы узнать, работает ли он – AdamSkywalker

ответ

2

Ваш текущий каталог может извлекается из системного свойства user.dir. Например. System.getProperty("user.dir").

Каталог ресурсов не совпадает с рабочим каталогом, который является каталогом, из которого выполняется ваше приложение. Каталог ресурсов используется, главным образом, для хранения файлов, созданных до выполнения, поэтому к ним можно получить доступ во время выполнения. Он не предназначен для записи во время выполнения. Поэтому поэтому, когда вы задаете путь к ресурсу в Gradle, он не будет устанавливать ваш текущий рабочий каталог на путь ресурса.

Вы все еще можете делать то, что хотите, но вам нужно будет написать ./src/main/resources/Test.txt. Я знаю, что иногда, когда вы разрабатываете приложение, вы захотите записать в папку ресурсов. Но просто обратите внимание, что когда приложение работает в фоновом режиме, не ожидается, что вы будете писать в папку ресурса, тем более, что чаще всего он будет находиться в JAR-файле.