Grails 4 如何在自定义命令中获取工件的句柄
Grails 4 how to get an handle to artifacts in custom command
我需要在 Grails 4 应用程序 (https://docs.grails.org/4.0.11/guide/single.html#creatingCustomCommands) 中构建一个自定义命令,并且我需要获取一些 Grails 服务和域的句柄 类,我将根据需要对其进行查询。
自定义命令框架非常简单:
import grails.dev.commands.*
import org.apache.maven.artifact.Artifact
class HelloWorldCommand implements GrailsApplicationCommand {
boolean handle() {
return true
}
}
虽然文档说自定义命令可以访问整个应用程序上下文,但我还没有找到任何关于如何处理它并开始访问各种应用程序工件的示例。
有什么提示吗?
编辑: 添加上下文并阐明自定义命令的目标,以便进一步 recommendation/best practices/etc。:命令从自定义格式的文件,保存数据,并以另一种自定义格式编写报告。
一旦数据可以从第三方 REST API.
获得,最终将被经常性工作取代
在 github.com/jeffbrown/marco-vittorini-orgeas-artifacts-cli 查看项目。
grails-app/services/marco/vittorini/orgeas/artifacts/cli/GreetingService.groovy
package marco.vittorini.orgeas.artifacts.cli
class GreetingService {
String greeting = 'Hello World'
}
grails-app/commands/marco/vittorini/orgeas/artifacts/cli/HelloCommand.groovy
package marco.vittorini.orgeas.artifacts.cli
import grails.dev.commands.*
class HelloCommand implements GrailsApplicationCommand {
GreetingService greetingService
boolean handle() {
println greetingService.greeting
return true
}
}
编辑:
我在 github.com/jeffbrown/marco-vittorini-orgeas-artifacts-cli/commit/49a846e3902073f8ea0539fcde550f6d002b9d89 添加了一个提交,它演示了访问域 class,这是我在写初始答案时忽略的问题的一部分。
我需要在 Grails 4 应用程序 (https://docs.grails.org/4.0.11/guide/single.html#creatingCustomCommands) 中构建一个自定义命令,并且我需要获取一些 Grails 服务和域的句柄 类,我将根据需要对其进行查询。
自定义命令框架非常简单:
import grails.dev.commands.*
import org.apache.maven.artifact.Artifact
class HelloWorldCommand implements GrailsApplicationCommand {
boolean handle() {
return true
}
}
虽然文档说自定义命令可以访问整个应用程序上下文,但我还没有找到任何关于如何处理它并开始访问各种应用程序工件的示例。
有什么提示吗?
编辑: 添加上下文并阐明自定义命令的目标,以便进一步 recommendation/best practices/etc。:命令从自定义格式的文件,保存数据,并以另一种自定义格式编写报告。 一旦数据可以从第三方 REST API.
获得,最终将被经常性工作取代在 github.com/jeffbrown/marco-vittorini-orgeas-artifacts-cli 查看项目。
grails-app/services/marco/vittorini/orgeas/artifacts/cli/GreetingService.groovy
package marco.vittorini.orgeas.artifacts.cli
class GreetingService {
String greeting = 'Hello World'
}
grails-app/commands/marco/vittorini/orgeas/artifacts/cli/HelloCommand.groovy
package marco.vittorini.orgeas.artifacts.cli
import grails.dev.commands.*
class HelloCommand implements GrailsApplicationCommand {
GreetingService greetingService
boolean handle() {
println greetingService.greeting
return true
}
}
编辑:
我在 github.com/jeffbrown/marco-vittorini-orgeas-artifacts-cli/commit/49a846e3902073f8ea0539fcde550f6d002b9d89 添加了一个提交,它演示了访问域 class,这是我在写初始答案时忽略的问题的一部分。