grails 3:"由于缺少gradle.properties而无法确定grails包装器版本"

时间:2017-06-29 09:33:23

标签: grails plugins

我们正试图在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是什么(我们习惯使用" grails" 2.5),我们不知道gradle.properties应该包含什么,也不知道为什么它不是由grails构建的自动。

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

  

为什么推荐的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下载到您的maven缓存中(如果它尚不存在)。无论您是否使用包装器,Grails都将在您第一次解析该版本的依赖项时位于您的maven缓存中,因此它不会向您的系统添加任何不存在的内容。

  

包装器的用例是什么?

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

也没有必要在系统上安装Grails来创建项目。使用start.grails.org站点,您只需单击按钮或简单的curl命令即可下载新创建的项目。然后,您可以将Grails包装器与这些项目一起使用,而根本不必安装Grails。