2015-12-01 3 views
0

Я переношу приложение Grails 2.5 в Grails 3.0.9 и имею некоторую проблему, читающую ресурс пути к классам в grails-app/init/BootStrap.groovy.Grails 3 - Чтение ресурса classpath в Bootstrap.groovy

В Grails 2.5.x можно было получить доступ к ресурсу (например, текстовых файлов) с использованием Spring ClassPathResource при вводе файла ресурсов в той же папке, что и BootStrap.groovy

def file1 = new ClassPathResource('my-textfile.txt').file 

В Grails 3 он работает, когда я начинаю моя заявка с использованием grails run-app. Все ресурсы взяты из src/main/resources. Но если я запустил приложение, используя приложение Spring Boot Application (находящееся в /grails-app/init/a/b/Application.groovy), в IntelliJ BootStrap.groovy найдет ресурсы больше.

Кто-нибудь знает, как получить доступ к этим файлам в пределах BootStrap.groovy в Grails 3.0.9 при запуске приложения, используя Application.groovy?

ответ

1

В соответствии с соглашением о Gradle я размещаю ресурсы под src/main/resource, так как они должны быть доступны во время выполнения.

По каким-то причинам мой grails-app/init/a/b/Application.groovy не может найти эти ресурсы, поэтому мне пришлось разместить символическую ссылку на grails-app/init/a/b. После этого все работает так, как ожидалось.

0
class BootStrap { 

    def init = { servletContext -> 

     def config = new ConfigSlurper().parse(new File("${System.properties['user.dir']}/grails-app/conf/test.groovy").toURL()) 
     println config 
     println config.hfy.test 
    } 
    def destroy = { 
    } 
} 

$ {System.properties [ 'user.dir']}: каталог проекта

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

  • Нет связанных вопросов^_^