如何从grails控制器触发gradle构建?

如何从grails控制器触发gradle构建?,grails,service,build,controller,gradle,Grails,Service,Build,Controller,Gradle,如何从Grails控制器构建外部Gradle项目?Grails2.0.0 更新: 我给gradle联合创始人亚当·默多克(Adam Murdoch)发了电子邮件,询问这个问题: 虽然我对这个问题没有直接的答案,但我有一个解决办法。 如果您对这个问题有任何进一步的见解,我们将不胜感激 我使用了Luke Daley提供的gradle构建脚本。运行build.gradle,并输出gradle工具api所需的4个jar文件。然后,我将它们放入我的Grails lib文件夹中 然后,我将以下代码写入名为c

如何从Grails控制器构建外部Gradle项目?Grails2.0.0

更新: 我给gradle联合创始人亚当·默多克(Adam Murdoch)发了电子邮件,询问这个问题:

虽然我对这个问题没有直接的答案,但我有一个解决办法。 如果您对这个问题有任何进一步的见解,我们将不胜感激

我使用了Luke Daley提供的gradle构建脚本。运行build.gradle,并输出gradle工具api所需的4个jar文件。然后,我将它们放入我的Grails lib文件夹中

然后,我将以下代码写入名为consoleController.groovy的grails控制器中

import org.gradle.tooling.BuildLauncher
import org.gradle.tooling.GradleConnector
import org.gradle.tooling.ProjectConnection

class consoleController {
   def run = {
       println "new run -------------------------------------"
       println "Building file..."

       String projectDir = "C:\\Documents and Settings\\Administrator\\Desktop\\demo"
       GradleConnector connector = GradleConnector.newConnector()
       connector.forProjectDirectory(new File(projectDir))

       ProjectConnection connection = connector.connect()
       try {
           BuildLauncher launcher = connection.newBuild()
           launcher.forTasks("hello")
           launcher.run()
       } finally {
           connection.close()
       }
    }
 }
我还创建了一个名为demo的目录,其中包含一个build.gradle文件

task hello {
    println "hello world"
}
我得到以下堆栈跟踪-错误: 请参阅-


堆栈跟踪对于StackOverflow.com太长。

您需要从以下内容开始:

以下是工具api的java连接器:


您需要从以下内容开始:

以下是工具api的java连接器:


你可以访问名为 它提供了设置用于嵌入grails工具API的最小grails项目的指导,并允许用户从grails控制器触发构建

Grails 2.0.0应该完全支持现成的Gradle工具API,但是Spring加载了一种支持类热重新加载的技术,它阻碍了Gradle工具API,并引发了一个错误: java.lang.ClassNotFoundException:com.springsource.loaded.ri.ReflectVeInterceptor -在尝试构建时

运行带有-noreloading标志的grails应用程序可以解决这个问题

>grails-noreloading运行应用程序

Grails嵌入的另一种选择是使用支持REST的持续集成服务器,如Jenkins TeamCity、Bambor、CruiseControl等,它仍然允许从Grails控制器触发构建。;虽然这不是这个问题的直接解决方案,但这些企业应用程序提供了Gradle嵌入的替代方案,可能更适合企业产品


干杯,TFM

您可以访问题为 它提供了设置用于嵌入grails工具API的最小grails项目的指导,并允许用户从grails控制器触发构建

Grails 2.0.0应该完全支持现成的Gradle工具API,但是Spring加载了一种支持类热重新加载的技术,它阻碍了Gradle工具API,并引发了一个错误: java.lang.ClassNotFoundException:com.springsource.loaded.ri.ReflectVeInterceptor -在尝试构建时

运行带有-noreloading标志的grails应用程序可以解决这个问题

>grails-noreloading运行应用程序

Grails嵌入的另一种选择是使用支持REST的持续集成服务器,如Jenkins TeamCity、Bambor、CruiseControl等,它仍然允许从Grails控制器触发构建。;虽然这不是这个问题的直接解决方案,但这些企业应用程序提供了Gradle嵌入的替代方案,可能更适合企业产品


干杯,TFM

用例子全面解释gradle嵌入是理想的,但这肯定会有所帮助。谢谢你给我指明了正确的方向。我听从了你的建议,但我仍然没有解决办法。我在gradle论坛上发布了我的问题--我在StackOverflow.com上更新了我的问题,也许你能帮我解决这个我还没有答案的问题,但是离完成还有很近的距离。你有com.springsource.loaded.ri.ReflectiveInterceptor吗gradle列表上的一条评论是使用Jenkins或其他构建服务器。。它们是您不使用构建服务器并让grails对其进行rest调用的原因吗?可能会简单得多。我没有强烈的理由反对使用构建服务器。我没想到这个主意。我如何从Grails控制器操作调用Jenkins,使其运行Gradle构建?用示例完整解释Gradle嵌入是理想的,但这肯定会有所帮助。谢谢你给我指明了正确的方向。我听从了你的建议,但我仍然没有解决办法。我在gradle论坛上发布了我的问题--我在StackOverflow.com上更新了我的问题,也许你能帮我解决这个我还没有答案的问题,但是离完成还有很近的距离。你有com.springsource.loaded.ri.ReflectiveInterceptor吗gradle列表上的一条评论是使用Jenkins或其他构建服务器。。它们是您不使用构建服务器并让grails对其进行rest调用的原因吗?可能会简单得多。我没有强烈的理由反对使用构建服务器。我没想到这个主意。我如何从Grails控制器操作调用Jenkins,使其运行Gradle构建?这样做的目的到底是什么?你什么时候触发b
Build?Benjamin Muschko-目的是提供事件触发的构建。只是想知道为什么不使用Jenkins作为例子?这就是为什么我问你是什么时候触发的。我想这是一个更好的解决办法。我如何从Grails控制器操作调用Jenkins,以便它可以执行Gradle构建?您不需要Grails应用程序通过Jenkins触发构建。Jenkins启动了自己的web容器。您只需在那里配置并启动构建。这样做的目的到底是什么?什么时候触发构建?Benjamin Muschko-目的是提供事件触发构建。只是想知道为什么不使用Jenkins作为例子?这就是为什么我问你是什么时候触发的。我想这是一个更好的解决办法。我如何从Grails控制器操作调用Jenkins,以便它可以执行Gradle构建?您不需要Grails应用程序通过Jenkins触发构建。Jenkins启动了自己的web容器。您只需在那里配置并启动构建。