使用 Grails 6.1.2 和 Shiro 创建新应用程序。得到这个:
我发现 grails 命令的大部分功能已被删除,我们现在需要使用 gradle。但是,我找到的所有文档都说要使用 grails 命令。
我确实确定了
编译“org.grails.plugins:grails-shiro:4.4”
在build.gradle中
如何使用 gradle 访问这些 grails 命令?
在 Grails 6 中,引入了改进的命令行界面 (CLI),与前身相比,速度和灵活性都得到了提高。一个显着的增强是消除了冗余任务,例如“grails run-app”。
但是,值得注意的是,此 CLI 完全离线运行,缺乏对 Grails 应用程序或其插件的了解。因此,来自插件的命令将不再按预期运行。
作为替代方案,您可以通过插件实现自定义应用程序命令,该命令可作为 Gradle 任务执行。例如,Grails Spring Security Core Plugin 支持 s2-quickstart 命令,可以执行如下所示:
./gradlew runCommand -Pargs="s2-quickstart"
除了提供的说明之外,我们还提供一个如何在 Grails 插件中创建自定义应用程序命令的示例:
假设我们想在插件中创建一个名为“custom-command”的自定义命令。以下是我们如何实现它:
grails-app/commands/your/plugin/package/CustomCommand.groovy
package your.plugin.package
import grails.cli.GrailsApplicationCommand
import org.springframework.beans.factory.annotation.Autowired
class CustomCommand extends GrailsApplicationCommand {
static final USAGE = "Usage: grails custom-command [options]"
static final COMMAND_NAME = 'custom-command'
@Autowired
YourService yourService // Assuming you have a service you want to use
@Override
String getName() {
COMMAND_NAME
}
@Override
String getDescription() {
"This is a custom command example."
}
@Override
String getUsage() {
USAGE
}
@Override
boolean handle() {
// Add your custom logic here
yourService.doSomething()
println "Executing custom command..."
return true // Return true to indicate successful execution
}
}
现在,您可以运行此命令:
./gradlew runCommand -Pargs="custom-command"
或者,您可以将插件依赖项添加到
buildSrc/build.gradle
,如下所示:
repositories {
mavenLocal()
mavenCentral()
maven { url "https://repo.grails.org/grails/core/" }
}
dependencies {
implementation("com.bertramlabs.plugins:asset-pipeline-gradle:4.3.0")
implementation("org.grails:grails-gradle-plugin:6.2.1-SNAPSHOT")
implementation("org.grails.plugins:hibernate5:8.1.0")
implementation("your.plugin.package:myplugin:1.0.0") { transitive = false }
}
这将添加一个名为
customCommand
的 Gradle 任务,可以执行为:
./gradlew customCommand -Pargs="option1 option2 ..."
希望有帮助!