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