2014-08-28 61 views
1

我没有看到任何东西,直接解决了我的问题,我相信这是简单的,因为我在这个新的,我有一个很难试图让我的头周围可能是什么出错了。创建Grails的插件,应用程序无法看到类

我创建了一个简单的插件,有一个,在它枚举类。它实际上是一个从现有应用程序复制到插件中相应路径的工作类。该类将从应用程序中删除。我构建插件,安装它,并可以看到它做grails列表插件。

在我的应用程序引用它(编译 “:为myplugin:1.0”)。

当我编译/运行的应用程序的应用程序会引发编译错误“无法解析类MyEnum”。

所有插件的例子似乎表明这应该很容易。 :/

所以总结:

  1. Grails的创建,插件为myplugin
  2. 迁移简单从另一个应用程序路径的src/XXX/MyEnum.groovy的插件路径的src/XXX/MyEnum.groovy
  3. 枚举
  4. Grails的Maven的安装应用程序的
  5. 阿尔特BuildConfig包括编译“:为myplugin:0.1”
  6. 运行的应用程序...获得通过在应用程序控制器使用它的编译错误枚举无法找到( )。

我这么想大?我必须。

我这样做是为了试图查看我是否可以将部分域对象与它们的一些相关类一起分离出来。

---- UPDATE ----

看起来像一个依赖性问题。我正在使用插件进行渐进式更改(以随时测试)。我打包并安装它,但是即使我使用刷新依赖关系,似乎grails应用程序仍然没有采用它。似乎我不得不每次更改增加插件的版本号以便让应用程序项目重新获取它?

+0

检查以确保您的包使用Enum的位置和Enum匹配的位置,或者将Enum导入到应用程序中的任何位置。 – 2014-08-28 18:12:11

+0

谢谢,我是。我从应用程序本身复制了结构。这就是为什么我觉得它一定是简单的我想念...:/ – Tuishimi 2014-08-28 18:21:41

+0

在maven安装后检查生成的.zip文件,如果文件在那里。接下来检查你的目标文件夹,(如用'find')如果有东西在附近。如果有疑问请更改插件的版本并再试一次 - 或者在m2本地回购和常青藤缓存中删除以前的版本。它也是'src/groovy//MyEnum.groovy',对不对? – cfrick 2014-08-28 18:27:19

回答

0

问题原来是应用程序没有检查依赖关系的更新。我没有找到合适的解决方案,但由于我处于开发周期,因此我只是在插件和BuildConfig中更新人造版本值。

0

有几件事情,你可以尝试:

  • 确保你,你正在使用它正确导入的Enum类。
  • 如果您对插件进行了更新,请使用grails maven-install重新安装插件,然后从目标目录中删除已编译的插件并运行grails refresh-dependencies或运行grails clean-all并重新运行grails refresh-dependencies
  • 在开发插件时,在您的测试应用程序中,通过添加grails.plugin.location."plugin-name" = "/path/to/plugin",尝试在插件的BuildConfig.groovy中使用相对路径。这将允许您对插件进行更改,并且它们会立即在您的测试应用程序中可用。
+0

感谢您的提示!我会在星期二尝试。与此同时,我设法解决了我遇到的所有问题,将域分离为插件,并设法甚至让消费应用程序从插件中读取迁移文件。 – Tuishimi 2014-08-31 06:44:47

相关问题