如何在 Grails 3.0.3 中更改 Application.groovy class 的位置?

How to change location of the Application.groovy class in Grails 3.0.3?

我使用控制台在 Grails 3.0.3 中创建了新应用程序:

grails create-app hello

并且 运行 可以:

grails run-app

但是现在,我想把Application.groovy所在的包名(原来的位置是hello/grails-app/init/hello/Application.groovy)改成别的名字,比如hello/grails-app/init/foo/Application .groovy。 当我尝试在更改后启动应用程序时出现异常:

Error: Could not find or load main class hello.Application

Application.groovy 文件的来源是(由 grails 生成,包名除外)

package foo

import grails.boot.GrailsApp
import grails.boot.config.GrailsAutoConfiguration

class Application extends GrailsAutoConfiguration {
    static void main(String[] args) {
        GrailsApp.run(Application, args)
    }
}

任何提示我应该在哪里更改才能重命名这个包?

编辑: 在文档中有一个片段:

grails-app/init/PACKAGE_PATH/Application.groovy The Application class used By Spring Boot to start the application

但还是不知道什么是PACKAGE_PATH以及如何设置。

如果您的包语句与目录结构相匹配,那么它应该可以正常工作。 运行 ./gradlew clean run.

我在 Win10 上 运行 它 gradlew.bat clean run 对我不起作用,它说没有 gradle 任务 run

对我有帮助的是 gradlew.bat wrapper,它重新创建了一些 gradle 脚本,然后 grails run-app 起作用了

经过2小时的调查,基于Jeff的,这里有详细的解释:

  1. 我创建了一个名为 foo 的示例应用程序,它创建了 grails-app/init/foo/Application.groovy
  2. 我 运行 应用程序(使用 grails run-app)并且一切正常
  3. 后来我把Application.groovy的包改成了com.test而不是foo
  4. 失败并出现错误 Could not find or load main class foo.Application
  5. 我一直尝试 grails clean 然后 grails run-app 但它没有用,因为 gradle 构建不干净
  6. 我尝试在 build.gradle 下设置 mainClassNamemainClass 但没有任何效果

最终 ./gradlew clean 使它起作用,所以很明显 grails clean 实际上并没有清理 gradle 构建。

对于windows,只是运行gradlew.bat clean

如果还是不行,杀掉你的 gradle 守护进程,运行 再次清理,重新 运行.