gpt4 book ai didi

grails - 如何使用 Gradle 设置多项目 Grails?

转载 作者:行者123 更新时间:2023-12-02 06:32:39 26 4
gpt4 key购买 nike

我正在尝试为多项目 Grails 应用程序设置一个 gradle 构建脚本。我用过grails-gradle plugin并启动并运行它以创建一个新应用程序。

但是,当我想要将现有的 Grails 多项目应用程序转换为使用 gradle 时,我遇到了一些问题。

我已在 settings.gradle 文件中声明了所有子项目,如下所示:

include 'core',        //Plugins        'plugin1',        'plugin2'

并为每个子项目在自己的 build.gradle 文件中设置其依赖项。例如plugin1 依赖于plugin2,因此我在plugin1 的build.gradle 文件中声明了以下内容:

dependencies {  compile project(':plugin2')}

但是,当我尝试运行 gradle test 命令时,出现以下错误:

Unresolved 依赖关系

出了什么问题:
任务“:plugin1:test”执行失败。
原因:无法解析配置“:plugin1:runtime”的所有依赖项:
- Unresolved 依赖项:{}#plugin2;1.5-SNAPSHOT:在 {}#plugin2;1.5-SNAPSHOT 中找不到配置:“默认”。 {}#plugin1;1.5-SNAPSHOT 编译需要它

我的问题是,如何在 gradle 中设置子项目依赖项?

我已在每个子项目 BuildConfig.groovy 中将它们声明为内联依赖项,我是否也必须在 gradle 中声明它们?

最佳答案

如果其他人也有同样的问题,我会回答我自己的问题。

我想设置多项目 Grails 应用程序的构建顺序(一个依赖于位于单独文件夹中的多个 grails 插件的主应用程序)。

我最终在每个子项目构建文件中声明了一个dependsOn()

示例:我的主要应用程序依赖于pluginA和pluginB。 PluginB 依赖于 PluginC

在我的根 build.gradle 中我声明:

dependsOnChildren()

在我的根settings.gradle中我声明:

include "pluginA","pluginB","pluginC"

在我声明的pluginB:s build.gradle 文件中

dependsOn(":pluginC")

这解决了我的问题。然而,它也引入了另一个问题,即每个插件的测试都已编译但未执行。

我找到了一个解决方案@ GRAILS-7296

我在每个子项目的 scripts 文件夹中创建了一个 _Events.groovy 文件,并包含:

// Override to workaround GRAILS-7296
org.codehaus.groovy.grails.test.support.GrailsTestTypeSupport.metaClass.getSourceDir = { ->
new File(delegate.buildBinding.grailsSettings.testSourceDir, delegate.relativeSourcePath)
}

这解决了我的所有问题,我现在有了一个使用 Gradle 进行构建的多项目 grails 应用程序。

关于grails - 如何使用 Gradle 设置多项目 Grails?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6610158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com