修改 GroovyDSL 类路径以包含第 3 方库
Modify GroovyDSL classpath to include 3rd party libraries
我正在尝试创建一个引用一些外部库的 GroovyDSL 脚本。这是我的脚本:
import com.github.javaparser.ast.Node
import org.reflections.Reflections
def ctx = context(
ctype: 'groovy.util.ObjectGraphBuilder',
paths: ['com/example/scripts/.*'],
filetypes: ["groovy"]
)
Map<String, Class> candidateClasses = new Reflections(Node.packageName).getSubTypesOf(Node)
.collectEntries { Class type -> [(type.simpleName.uncapitalize()): type] }
contributor(ctx) {
candidateClasses.each { String methodName, Class type ->
method name: methodName, params: [props: "java.util.Map", closure: "groovy.lang.Closure"], type: type.name
}
}
尝试在 Intellij 中启用它,我得到:
startup failed: transformDslSyntaxgdsl: 1: unable to resolve class com.github.javaparser.ast.Node
@ line 1, column 1.
import com.github.javaparser.ast.Node
现在,我在 pom.xml
中声明了正确的外部依赖项,依赖于它们的其余代码工作正常。我还将脚本放在源文件夹中(此处建议的其他一些答案可能相关)。
我看过一些 GDSL 参考 Intellij 类型的示例,例如 PsiClass
,这告诉我 GDSL 文件的类路径似乎与项目类路径不同。有什么方法可以确保项目依赖项附加到该类路径?
我也试过使用 @Grape
只得到 。添加 Apache Ivy 作为依赖项没有帮助,因为项目依赖项似乎不会影响 GDSL 类路径。
深入挖掘后,我发现修改 IDE 的类路径本身非常容易。
您需要做的就是将依赖项放入 Intellij 安装目录的 lib
子文件夹中,并引用 classpath.txt
.
中的 jar
最初,我添加了我的 GDSL 直接依赖的 jar,但后来我意识到我可以简单地将对 Apache Ivy 的依赖添加到 classpath.txt
而 @Grab
注释将开始工作。
我正在尝试创建一个引用一些外部库的 GroovyDSL 脚本。这是我的脚本:
import com.github.javaparser.ast.Node
import org.reflections.Reflections
def ctx = context(
ctype: 'groovy.util.ObjectGraphBuilder',
paths: ['com/example/scripts/.*'],
filetypes: ["groovy"]
)
Map<String, Class> candidateClasses = new Reflections(Node.packageName).getSubTypesOf(Node)
.collectEntries { Class type -> [(type.simpleName.uncapitalize()): type] }
contributor(ctx) {
candidateClasses.each { String methodName, Class type ->
method name: methodName, params: [props: "java.util.Map", closure: "groovy.lang.Closure"], type: type.name
}
}
尝试在 Intellij 中启用它,我得到:
startup failed: transformDslSyntaxgdsl: 1: unable to resolve class com.github.javaparser.ast.Node
@ line 1, column 1.
import com.github.javaparser.ast.Node
现在,我在 pom.xml
中声明了正确的外部依赖项,依赖于它们的其余代码工作正常。我还将脚本放在源文件夹中(此处建议的其他一些答案可能相关)。
我看过一些 GDSL 参考 Intellij 类型的示例,例如 PsiClass
,这告诉我 GDSL 文件的类路径似乎与项目类路径不同。有什么方法可以确保项目依赖项附加到该类路径?
我也试过使用 @Grape
只得到
深入挖掘后,我发现修改 IDE 的类路径本身非常容易。
您需要做的就是将依赖项放入 Intellij 安装目录的 lib
子文件夹中,并引用 classpath.txt
.
最初,我添加了我的 GDSL 直接依赖的 jar,但后来我意识到我可以简单地将对 Apache Ivy 的依赖添加到 classpath.txt
而 @Grab
注释将开始工作。