Скрипт Grails 3.2.0 Bootstrap.groovy не выполняется

После того, как я обновил свой проект с Grails 3.1.11 до 3.2.0, проект перестал работать.

Когда я запускаю проект из IDE, он отлично работает. Но когда я упаковываю его в банку и пытаюсь запустить в терминале, BootStrap.groovy не выполняется.

В чем проблема?


person Sergey Linnik    schedule 21.10.2016    source источник
comment
Ваш BootStrap.groovy находится в определенном пакете или только в пакете по умолчанию, например. в файле не определен пакет?   -  person Gregor Petrin    schedule 21.10.2016
comment
@GregorPetrin по умолчанию, без пакета   -  person Sergey Linnik    schedule 21.10.2016
comment
Неважно, я только что проверил, и он выполняется независимо, у нас были проблемы, например. taglibs, для которых не определен пакет; ваш BootStrap находится в grails-app/init/BootStrap.groovy или где-то еще?   -  person Gregor Petrin    schedule 21.10.2016
comment
@GregorPetrin мой BootStrap.groovy находится в grails-app/init. Я уже нашел вопрос на GitHub об этой проблеме и ответил ниже. Спасибо за помощь!   -  person Sergey Linnik    schedule 21.10.2016


Ответы (2)


Я только что нашел проблему на GitHub. Теперь BootStrap.groovy и UrlMappings.groovy должны быть в пакете по умолчанию

Пакет по умолчанию указан в application.yml

grails:
    codegen:
        defaultPackage: com.example.app

В документах по миграции пока нет информации об этой проблеме..

person Sergey Linnik    schedule 21.10.2016

Ответ Сергея Линника правильный: файл Bootstrap.groovy должен быть в пакете по умолчанию, но будьте осторожны при использовании IDE (в моем случае Intellij 2016.2.4) для рефакторинга Bootstrap .groovy из папки init в пакет по умолчанию, который он добавляет

package default //ensure the package folder is added

class BootStrap {///}

В противном случае при сборке приложения Grails он снова перемещает файл Bootstrap.groovy из пакета по умолчанию, потому что рефакторинг не обновил его. Не уверен, что это ошибка Intellij или нет ..

person keano    schedule 03.11.2016
comment
Я думаю, что проблема здесь в том, что не имеет значения, где находится файл .groovy, файл .class будет помещен туда, где указано в объявлении пакета, поэтому, когда происходит импорт класса, им нужно искать его там, где в объявлении пакета сказано, что так и должно быть. - person billjamesdev; 23.01.2018