2016-02-19 3 views
2

Есть ли способ убедить Gradle принимать файлы ресурсов (например, файлы XML), а также в папке src/main/java?Gradle: принять файлы ресурсов в папке src/main/java

Это было бы здорово, так как мне нужно положить мои файлы XML JavaFX там ...

+0

В чем проблема? что не работает? это о развертываемых ресурсах, которые не доступны где-то? почему бы не использовать соглашение о включении их в src/main/resources? Вы просмотрели https://docs.gradle.org/current/userguide/java_plugin.html, чтобы увидеть, что вы можете переопределить, где находится субдир ресурсов? –

+1

Я не могу помочь вам с Gradle, но почему вам нужно поставить свой FXML? файлы там? – mipa

+0

@mipa JavaFX Scene Builder ожидает, что файлы FXML будут в той же папке, что и класс Controller. – Hannes

ответ

4

Вы можете определить, где Gradle ищет файлы ресурсов, делая что-то вроде этого:

sourceSets { 
    main { 
     resources { 
      srcDirs = ["src/main/java"] 
      includes = ["**/*.fxml"] 
     } 
    } 
} 
+0

Ну, это действительно трюк. Но это хорошее/приятное решение проблемы? – Hannes

+1

Это точно соответствует лучшим методам Gradle, поэтому я бы проголосовал «да» –

+0

Если вы собираетесь использовать этот подход для предоставления ресурсов в 'src/main/java' (который я лично ненавижу), я бы предложил вам используйте 'excludes = [" **/*. java "]' вместо 'includes = [" **/*. fxml "]' –

-1

Как видно из названия предлагает src/main/java для файлов JAVA. Хотя можно настроить настройки по умолчанию, чтобы разрешить ресурсы в этой папке, вы не должны (на мой взгляд).

Предлагаю вам придерживаться разумных соглашений и помещать ваш xml и т. Д. В src/main/resources. За этим соглашением следуют как Maven, так и Gradle.

+2

OP утверждает, что они используют javaFX, который (по-видимому) заставляет тогда помещать файлы fxml в тот же путь, что и их файлы Java. Кажется, их выбор не нарушал конвенцию. Gradle поддерживает настройку местоположения ресурсов именно для этого типа ситуации, не так ли? – RaGe

+0

Несомненно ... если он ДОЛЖЕН быть таким, то Gradle позволит вам сделать это, как показано в другом ответе. Никогда не использовал javaFX сам, но удивлялся, что он заставляет это соглашение. –

Смежные вопросы