Groovy 如何使jar中的GDSL文件在Intellij中的另一个项目中获得?

Groovy 如何使jar中的GDSL文件在Intellij中的另一个项目中获得?,groovy,intellij-idea,Groovy,Intellij Idea,我有一个带有GDSL文件的项目,该文件描述了DSL委托,如: def ctx = context pathRegexp: ".*installer\\.groovy", scope: scriptScope() contributor(ctx) { delegatesTo(findClass("com.whatever.InstallerBase")) } 我使用maven将这个文件打包到jar中(就在jar的根目录中) 在另一个项目中,我对包含gdsl的jar工件具有maven依赖性

我有一个带有GDSL文件的项目,该文件描述了DSL委托,如:

def ctx = context  pathRegexp: ".*installer\\.groovy", scope: scriptScope()
contributor(ctx) {
   delegatesTo(findClass("com.whatever.InstallerBase"))
}
我使用maven将这个文件打包到jar中(就在jar的根目录中)

在另一个项目中,我对包含gdsl的jar工件具有maven依赖性。但是,我的自动完成功能不起作用。它可以很好地与第一个项目中的示例脚本(与GDSL)配合使用


是否有一个步骤我错过了,以便GDSL被拿起?我需要把它放在罐子里的一个特殊文件夹里吗?

问题确实是@PeterGromov在对问题的评论中指出的:

确保库jar仅作为类而不是库源附加

源代码和库都已配置,因此IDEA不包括它。我已在此处打开youtrack问题以解决此问题:

要尝试的一件事是文件|使缓存无效并重新启动。另一个-确保库jar只作为类附加,而不是作为库源附加。谢谢@PeterGromov,但是如果它作为源附加,为什么会有问题呢?我总是导入maven源代码+文档。这一定是我的问题,因为我现在没有得到Gpars dsl,但是如果我在Definitions.gdsl中使用ctrl+shift+n,我会看到两个条目:一个用于jar,另一个用于sources jar。我可以投票支持youtrack问题吗?因为代码是这样写的:(.如果IDEA同时从类和源运行gdsl,可能会导致同一个脚本运行两次,这可能会导致性能下降,并可能导致重复的变体。但如果gdsl文件位于库类jar中,则应该立即执行。目前还没有YouTrack问题。