我在Mac上安装了grails 3.3.9。
如果我创建普通应用程序,例如使用:
grails create-app myapp
我可以创建域类,视图等,运行应用程序并查看网页。
但是,我需要两个不同的Web应用程序(一个用于内部后台,一个用于面向公共网站的客户)。解决方案是创建一个仅包含域对象和服务层的核心插件,然后由两个Web应用程序以及后来的API应用程序等调用。
我按照官方指示here
即:
$ 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中该行的几种变体,包括:
有什么想法吗?
我刚刚在3.3.8中尝试过,它似乎可以工作。因此,这似乎是3.3.9中的错误,导致无法使用模块化应用。