DataGrip org.codehaus.groovy.control.MultipleCompilationErro



我无法运行一些基本的抽象groovy代码。我已经阅读了这个链接,并从Data Grip自动生成pojos和rest控制器。

  1. 在DataGrip上,我右键单击"Scripted extension "和
  2. 选择Groovy文件。如果文件完全写成"Groovy pojo . Groovy "(见链接)然后它工作。
  3. 如果我想在可重用性周围使用一些基本的抽象和设计,它就行不通了。甚至不能在Groovy中导入类。

我尝试的简单代码片段

class abstract AGenerate {
abstract def getPackageName() ;
abstract def getFileSuffix() ;
abstract def generateClassFiles()
abstract def generate(output, className, fields) ;
def typeMapping = [
(~/(?i)int/) : "Integer",
(~/(?i)bigint/) : "Long",
(~/(?i)float/): "Double", : "Float",
(~/(?i)double|decimal|real/) : "Double",
(~/(?i)datetime|timestamp/) : "java.sql.Timestamp",
(~/(?i)date/) : "java.sql.Date",
(~/(?i)time/) : "java.sql.Time",
(~/(?i)/) : "String"
]
...  
package com.companyname.autogenerate ;
import com.intellij.database.model.DasTable
import com.intellij.database.model.ObjectKind
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil
FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->
SELECTION.filter { it instanceof DasTable && it.getKind() == ObjectKind.TABLE }.each { generateFolderFromTable(it, dir) }
}
class GenerateEntityClass extends AGenerate {
def getFileSuffix() {
return "Entity.java"
}
def getPackageName() {
return "com.sample;" ;
}
...

注意,我已经定义了一个超类generate和子类GenerateEntityClass,当我试图在导入行运行AutoGenerate时,我得到了一个错误

import com.intellij.database.model.DasTable
import com.intellij.database.model.ObjectKind
import com.mycompany.autogenerate.GenerateEntityClass
def GenerateEntityClass entityClass = new GenerateEntityClass();
FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->        
SELECTION.filter { it instanceof DasTable && it.getKind() == ObjectKind.TABLE }.each { entityClass.generateFolderFromTable(it, dir) }
}

我得到一个错误

12:06 AM AutoGenerate.groovy:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:Script24。Groovy: 4:无法解析类第4行,第1列。进口com.companyname.autogenerate.GenerateEntityClass;

编辑:文件夹结构项目

-->scripts
----->AutoGenerate.groovy (call this from DataGrip)
----->com
-------->companyname
----------->autogenerate
-------------->AGenerate.groovy
-------------->GenerateEntityClass.groovy
-->src

由于某些原因抽象不能工作。因此,我只是将脚本分隔在不同的文件中(更改的和未更改的),并使用bash脚本进行连接。目前这应该是可行的。在有人用更好的方式回答这个问题之前,这是可行的。

最新更新