Пользовательский каталог ресурсов для Revolver/Spray

У меня есть приложение Spray с базовым интерфейсным компонентом с исходным кодом в src/main/frontend и развернутой версией (скомпилированный sass, минимизация и т. д.) в расположении ресурсов Spray по умолчанию src/main/resources. Я хотел бы изменить каталог ресурсов на src/main/frontend только для задачи Revolver re-start, чтобы быстрее видеть изменения при разработке.

Я попытался добавить настройку

resourceDirectory in Revolver.reStart <<= baseDirectory(_ / "src" / "main" / "frontend")

но вроде не влияет. Я думаю, потому что resourceDirectory — это настройка в прицеле Compile, а не в самом револьвере. В консоли SBT:

> reStart:resourceDirectory
[info] /Users/cartew01/workspace/applaudio-spray/src/main/frontend
> compile:resourceDirectory
[info] /Users/cartew01/workspace/applaudio-spray/src/main/resources

Кто-нибудь знает, как я могу изменить это для задачи re-start, но не для других? Возможно, создав пользовательскую задачу, которая вызывает перезапуск с дополнительной настройкой?

Спасибо за помощь.


person William Carter    schedule 24.02.2015    source источник
comment
Вы должны добавить свой другой каталог ресурсов в полный путь к классам в reStart, например (fullClasspath in Revolver.reStart) += (WebKeys.public in Assets in web).value, или в вашем случае fullClasspath in Revolver.reStart += baseDirectory(_ / "src" / "main" / "frontend") - на самом деле, getFromResourceDirectory и getFromResource будут обслуживать содержимое из пути к классам.   -  person abatyuk    schedule 25.02.2015
comment
на самом деле, чтобы лучше понять это, я предлагаю запустить inspect reStart - это зависит от compile:products, который, в свою очередь, зависит от compile:copyResources, который, в свою очередь, зависит от compile:resourceDirectories. Таким образом, reStart будет использовать все, что создано компилятором, то есть ресурсы, скопированные откуда-то. Решение выше кажется немного проще.   -  person abatyuk    schedule 25.02.2015
comment
Гениальное решение проблемы. Большое спасибо. Однако теперь я застрял с чем-то гораздо более тривиальным. Я добавил fullClasspath in Revolver.reStart += baseDirectory(_ / "src" / "main" / "frontend").value в сборку, как было предложено, и это работает, но я бы хотел, чтобы этот каталог отображался в начале пути к классам. Как добавить файл в путь к классам SBT? Спасибо еще раз.   -  person William Carter    schedule 26.02.2015
comment
Нашел ответ в этом сообщении: stackoverflow.com/questions/18525478/. Можно сопоставить пути к классам: fullClasspath in Revolver.reStart <<= (fullClasspath in Revolver.reStart, baseDirectory) map { (classpath, base) => Attributed.blank(base/"src"/"main"/"frontend") +: classpath } Спасибо, абатюк.   -  person William Carter    schedule 26.02.2015
comment
Поскольку никто другой не вмешался, поместите решение выше в качестве ответа   -  person abatyuk    schedule 26.02.2015


Ответы (1)


Вы должны добавить свой другой каталог ресурсов в fullClasspath в reStart, например (fullClasspath in Revolver.reStart) += (WebKeys.public in Assets in web).value, или в вашем случае fullClasspath in Revolver.reStart += baseDirectory(_ / "src" / "main" / "frontend") - на самом деле getFromResourceDirectory и getFromResource будут обслуживать содержимое из пути к классу.

чтобы лучше понять это, я предлагаю запустить inspect reStart - это зависит от compile:products, который, в свою очередь, зависит от compile:copyResources, который, в свою очередь, зависит от compile:resourceDirectories. Таким образом, reStart будет использовать все, что создано компилятором, то есть ресурсы, скопированные откуда-то. Решение выше кажется немного проще

person abatyuk    schedule 26.02.2015