【问题标题】:Running a Grails 3 project with in line plugins使用内置插件运行 Grails 3 项目
【发布时间】:2016-03-31 22:27:03
【问题描述】:

我几乎可以肯定这是一个愚蠢的问题,但我不知道它的答案 :) 我正在将我的一个项目从 Grails 2.5 升级到 3 并尝试掌握新的内联插件结构,旧方式运行良好,但难以让新方式运行。

我的目录结构如下:

/ /settings.gradle /myApp #包含一个 grails 3 应用程序 /myPlugin1 #包含一个 grails 3 插件 /myPlugin2 #包含一个 grails 3 插件

/settings.gradle 包含:

包括“myPlugin1”、“myPlugin2” project(':myPlugin1').projectDir = new File('myPlugin1') project(':myPlugin2').projectDir = new File('myPlugin2')

我在 /myApp 中的 build.gradle 包含:

编译项目(":myPlugin1"), 项目(":myPlugin2")

据我所知,上述内容是正确的,因为当我从根目录运行“gradle build”时,它会成功构建插件。但是,当我运行时

grails 运行应用程序

从 myApp 目录我收到以下错误:

FAILURE:构建失败并出现异常。 * 在哪里: 构建文件“/Users/donald/myApp/build.gradle”行:76 * 什么地方出了错: 评估根项目“myApp”时出现问题。 > 在根项目“myApp”中找不到路径为“:myPlugin1”的项目。 * 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。 构建失败 总时间:1.572 秒 |初始化类路径时出错:在根项目“myApp”中找不到路径为“:myPlugin1”的项目。 (使用 --stacktrace 查看完整的跟踪信息)

所以问题是真的 - 我如何让我的应用程序为我的内联插件找到正确的位置?我尝试在 myApp 中创建一个 settings.gradle ,但我收到了类似这样的其他错误:

插件“io.spring.dependency-management”已经在脚本类路径中。脚本类路径上的插件不能在 plugins {} 块中应用。将“应用插件:'io.spring.dependency-management'”添加到脚本主体以使用插件。

提前致谢。

【问题讨论】:

  • 尝试在settings.gradle中包含myApp
  • 感谢 droggo,修复了它

标签: grails gradle groovy grails-plugin grails-3.0


【解决方案1】:

上下文

我在 github 上创建了一个多项目测试,以提供一个可行的解决方案。这个多项目测试是使用 Grails 3.2.11 和 Java 1.7 创建的。你可以从这里下载:https://github.com/esalomon/multi-project-test3

接下来您将找到创建它的说明。

项目创建

1 创建多项目文件夹:

mkdir multi-project-test3
cd multi-project-test3

2 Grails 应用程序和插件已创建:

grails create-app myApp
grails create-plugin myPlugin1
grails create-plugin myPlugin2

3 myApp的settings.gradle文件被删除:

rm myApp/settings.gradle

4 创建多项目的 settings.gradle 文件,内容如下:

include 'myApp', 'myPlugin1', 'myPlugin2'
project(':myApp').name = 'myApp'

5 myApp 的 build.gradle 文件使用内联插件引用进行更新:

grails {
    plugins {
        compile project(":myPlugin1")
        compile project(":myPlugin2")
    }
}

项目测试

创建了三个控制器,每个 Grails 项目中一个用于测试应用程序:

1 myApp 的控制器已创建:

cd myApp
grails create-controller myAppController

2 myApp 的控制器使用以下代码更新:

package myapp

class AppController {

    def index() {
        render "[${new Date()}] This is the myApp's appController's index response."
    }
}

3 myPlugin1 的控制器已创建:

cd myPlugin1
grails create-controller myPlugin1Controller

4 myPlugin1 的控制器使用以下代码更新:

package myplugin1

class Plugin1Controller {

    def index() {
        render "[${new Date()}] This is the myPlugin1's plugin1Controller's index response."
    }
}

5 myPlugin2 的控制器已创建:

cd myPlugin2
grails create-controller myPlugin2Controller

6 myPlugin2 的控制器更新为以下代码:

包 myplugin2

class Plugin2Controller {

    def index() {
        render "[${new Date()}] This is the myPlugin2's plugin2Controller's index response."
    }
}

项目执行

当使用 run-app 命令执行 myApp 项目时,它会显示带有三个控制器的 Grails 主页面,每个 Grails 项目一个:

cd myApp
grails run-app
| Running application...
Grails application running at http://localhost:8080 in environment: development

结论

我希望这可以帮助其他人,问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    相关资源
    最近更新 更多