У меня установлен Grails 3.3.9.
Если я создаю обычное приложение, например, с помощью:
grails create-app myapp
Я могу создавать классы доменов, представления и т. Д., Запускать приложение и просматривать веб-страницы.
Однако мне нужны два разных веб-приложения (одно для внутреннего бэк-офиса и одно для общедоступного веб-сайта, ориентированного на клиента). Решение состоит в том, чтобы создать основной плагин, который содержит только доменные объекты и сервисный слой, который затем вызывается двумя веб-приложениями, а также более поздними приложениями API и т. Д.
Я следовал официальным инструкциям здесь
т.е:.
$ grails create-plugin core --profile=plugin --features=hibernate5,events
$ Grails create-app myapp
$ create settings.gradle with: include "myapp","core"
$ edit build.grandle of myapp and add:
grails {
plugins {
compile project(':core')
}
}
Теперь, когда я пытаюсь скомпилировать либо выполнить команду grails (например, grails create-service), я получаю следующее:
| Resolving Dependencies. Please wait...
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/me/dev/grails_projects/tst/core/build.gradle' line: 17
* What went wrong:
A problem occurred evaluating project ':core'.
> Failed to apply plugin [id 'org.grails.grails-plugin']
> Could not find method runtimeOnly() for arguments [io.methvin:directory-watcher] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Если я удаляю settings.gradle, я могу скомпилировать плагин. Если я добавлю его обратно, произойдет сбой компиляции (или любой другой команды grails, например create-domain-class) с указанной выше ошибкой.
Вот build.gradle:
buildscript {
repositories {
mavenLocal()
maven { url "https://repo.grails.org/grails/core" }
}
dependencies {
classpath "org.grails:grails-gradle-plugin:$grailsVersion"
classpath "org.grails.plugins:hibernate5:${gormVersion-".RELEASE"}"
}
}
version "0.1"
group "core"
apply plugin:"eclipse"
apply plugin:"idea"
apply plugin:"org.grails.grails-plugin"
apply plugin:"org.grails.grails-plugin-publish"
оскорбительная строка 17:
apply plugin:"org.grails.grails-plugin"
Я также попытался создать плагин с именем "corex" вместо core на тот случай, если это было зарезервированное слово. Получил те же результаты - плагин не скомпилируется.
Обратите внимание, структура каталогов проекта выглядит следующим образом:
settings.gradle
myapp
build.gradle
etc.
core
build.gradle.
etc.
Я также пробовал несколько вариантов строки в settings.gradle, в том числе:
- включает «myapp», «core»
- включает 'core', 'myapp'
- include ": myapp", ": core"
Есть идеи?
ОБНОВЛЕНИЕ 1
Я только что попробовал это с 3.3.8, и, кажется, работает. Таким образом, в 3.3.9 может показаться, что это ошибка, которая не позволяет использовать модульные приложения.