【问题标题】:grails 3: "could not determine grails wrapper version due to missing gradle.properties"grails 3:“由于缺少 gradle.properties,无法确定 grails 包装器版本”
【发布时间】:2017-06-29 09:33:23
【问题描述】:

我们正在尝试在 grails 3 中启动并运行一个新项目。

我们就这样创建了一个项目:

grails create-app plugin-domain --profile=plugin

现在遵循文档here,在第 4.1 节创建一个域类,它说要这样做:

./grailsw create-domain-class Vehicle

当我们对我们的领域类执行此操作时,我们得到:

"could not determine grails wrapper version due to missing gradle.properties"

我们不知道 grailsw 是什么(我们习惯于在 2.5 中使用“grails”),我们不知道 gradle.properties 应该包含什么,也不知道为什么它不是由 grails 自动构建的。

显然这是一个插件(旨在仅保存域对象和服务),而不是应用程序,因此我们不能直接使用 run-app 运行它。

有趣的是,我们只是尝试了旧方法,使用“grails create-domain-class xxx”并且它成功了,所以问题是为什么推荐的 grailsw 命令不起作用,我们如何解决它?

做一些调查,grailsw 是某种不需要安装 grails 的包装器。任何运行诸如 create-domain-class 之类的东西的人都会安装 grails,所以我们不太明白它的意义吗?这将导致 grails 至少安装两次,一次是正确的方式,第二次是由包装系统安装。包装器的用例是什么?在生产中,你会放弃对 tomcat 或类似的战争,在开发中,所有开发人员都将安装 grails。我们可以忽略 grailsw,还是需要修复它?

【问题讨论】:

    标签: grails plugins


    【解决方案1】:

    如果您还没有安装 gradle,则需要 grailsw。您可以删除它并使用 gradle,也可以手动创建类。

    gradle.properties 用于构建常量。

    在您的应用根目录中创建文件 gradle.properties,其中包含以下内容:

    grailsVersion=3.2.11
    gormVersion=6.0.12.RELEASE
    grailsWrapperVersion=3.4.1
    

    将值更改为您的项目版本并再次尝试 ./grailsw create-domain-class Vehicle

    【讨论】:

    • "如果你还没有安装 gradle,则需要 grailsw。你可以删除它并使用 gradle,也可以手动创建类。"那不是真的。您不能使用 gradle 来执行所有 Grails 命令。如果您安装了 Grails,则不需要包装器。您几乎不必安装 Gradle,因为提供了包装器,类似于 Grails 包装器。
    【解决方案2】:

    为什么推荐的 grailsw 命令不起作用,我们如何解决它

    它不起作用,因为缺少 gradle.properties 文件。为什么它会丢失,我不知道,因为它是在我运行命令时为我创建的。

    Jamess-MacBook-Pro:demo jameskleeh$ grails create-app foo -profile plugin
    | Application created at /Users/jameskleeh/demo/foo
    Jamess-MacBook-Pro:demo jameskleeh$ cd foo
    Jamess-MacBook-Pro:foo jameskleeh$ cat gradle.properties
    grailsVersion=3.2.9
    gormVersion=6.0.10.RELEASE
    gradleWrapperVersion=3.4.1
    

    任何运行诸如 create-domain-class 之类的东西的人都将拥有 grails 安装了,所以我们不太明白它的意义吗?

    也许您可以与您的团队一起做出这样的假设,但这并不适用于所有人。

    这将导致 grails 至少安装两次,一次 正确的方式,第二次由包装系统。

    这是不正确的。包装器不会像通过 sdkman 或简单地下载它一样“安装”Grails。如果 Grails 尚不存在,它会将 Grails 下载到您的 Maven 缓存中。无论您是否使用包装器,当您第一次解决该版本的依赖项时,Grails 都会在您的 maven 缓存中,因此它不会向您的系统添加任何不存在的内容。

    包装器的用例是什么?

    包装器的用例是让开发人员不必为现有项目管理 Grails 版本。在处理可能具有不同版本的多个项目时,您不必在已安装的版本之间切换。如果您始终使用包装器,您将始终使用正确的 Grails 版本。此外,可能根本没有安装 Grails 的开发人员不需要安装 Grails 即可开始项目工作。

    创建项目也不必在您的系统上安装 Grails。通过start.grails.org 站点,您可以通过单击按钮或简单的 curl 命令下载新创建的项目。然后,您可以将 Grails 包装器用于这些项目,而根本不必安装 Grails。

    【讨论】:

      猜你喜欢
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2016-09-15
      相关资源
      最近更新 更多