2016-02-22 7 views
5

Мое приложение требует, чтобы каталог \config был доступен в пути к классам, когда он ищет файлы конфигураций в каталоге. Я в настоящее время имею зависимости настроено таким образом, хотя это, вероятно, не правильный способ сделать каталог доступным для моего приложения:Gradle - добавить каталог в путь к классам

dependencies { 
    ... //runtime, compile dependencies pulled from repositories 
    runtime files('config') 
} 

Я использую application плагин для создания автономной Молнии для моего проекта. Если мой \config каталог имеет \config\subdir, file1, file2, то плагин создает каталог build\install со следующей структурой:

| build 
| --|install 
| ----|bin 
| ------ projectName 
| ------ projectName.bat 
| ----|lib 
| ------ dependency1.jar 
| ------ dependency2.jar 
| ------|subdir 
| ------ file1 
| ------ file2 

Это не работает для моего приложения, поскольку он явно ожидает, что директория \config

Однако, это структура каталогов, в которой я нуждаюсь:

| build 
| --|install 
| ----|bin 
| ------ projectName 
| ------ projectName.bat 
| ----|lib 
| ------ dependency1.jar 
| ------ dependency2.jar 
| ----|config 
| ------|subdir 
| ------ file1 
| ------ file2 

Как я могу сделать gradle добавить другой каталог в сборку d указать его как часть пути к классам для сгенерированных сценариев запуска?

+0

Где ваша папка конфигурации находится в исходных каталогах? Если он находится в 'src/main/resources', я бы предположил, что плагин приложения также упакует его. – RaGe

+0

Это не в исходных каталогах. Он находится в корневой папке проекта. Должен ли он быть перемещен? –

+0

Как вы добавляете его в classpath? Да, я предлагаю переместить его в/src/dist, как я разместил ниже. – RaGe

ответ

4

Применение плагин documentation говорит:

статические файлы, которые будут добавлены в распределение может быть просто добавлен в SRC/дист

Я хотел бы попробовать положить ваш конфигурационный каталог в src/dist/lib и продолжить добавление это к вашему классуpath с помощью runtime files('src/dist/lib/config')

Примечание: работа вокруг this defect означает, что конфигурация должна быть в /lib под src/dist

+0

Я пробовал этот подход. Теперь я могу получить вторую структуру каталогов, которую я описал в своем вопросе, но путь к классам по-прежнему является неправильным в сгенерированных скриптах. Он определяет classpath как 'set CLASSPATH =% APP_HOME% \ lib \ config', когда он должен быть« установлен CLASSPATH =% APP_HOME% \ config'. как я могу это достичь? –

+0

Если я вручную настроил сгенерированный скрипт на 'set CLASSPATH =% APP_HOME% \ config', мое приложение работает правильно, но это определенно не идеально. Мне не нужно было редактировать вывод сборки, не так ли? –

+2

Вздох, похоже, вы столкнулись с этим: https://issues.gradle.org/browse/GRADLE-2991 и нет, вам не придется редактировать какие-либо скрипты вручную после сборки. Простейшим обходным решением, о котором я могу думать, является установка вашей папки config в '/ src/dist/lib' – RaGe

0

Вы можете попробовать это:

project('project-name') { 
    apply plugin: 'application' 
    mainClassName = "your.main.Class" 

    startScripts { 
     classpath += files('src/dist/lib/conf') 
    } 

Более подробную информацию можно найти here.

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