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,这是我在写初始答案时忽略的问题的一部分。