我正在从2.1.0版本升级我的Grails应用程序。在此升级之前,应用程序运行良好。我下载并设置了新版本的Grails(最初我尝试了2.2.1版,但今天尝试进入2.2.2版)并在我的应用程序上进行了Grails升级。
由于该升级,我的应用程序无法启动,引用了DuplicateMappingException。
DuplicateMappingException: duplicate import: User refers to both com.mycompany.myapp.User and net.security.User (try using auto-import="false")
或
DuplicateMappingException: duplicate import: Role refers to both net.security.Role and com.mycompany.myapp.Role (try using auto-import="false")
所以在我看来GORM出于某种原因认为需要将这些net.security
类映射到数据库。
Role
和User
是我用于Grails的Shiro安全插件的域类。
我尝试将autoImport false
添加到我的域类中的映射块。这会导致系统中使用User
或Role
的其他部分出现问题。我没有进一步追求这一点,因为我确信这里不应该有冲突。
所以我在寻找是否有人知道可能导致这种情况的原因,或者我可能尝试修复它的一些事情。
仅供参考我在该项目上尝试过Grails clean。
由于
答案 0 :(得分:0)
好的,问题是net.security
类不像我想的那样是随机类。 net.security
是Shiro OpenID插件类的默认包。所以在项目早期,我们使用自己的包添加了User
和Role
类,而不是使用Shiro OpenID插件附带的类。此时,我们必须从grails-app
目录中的src/groovy/net/security
和.grails/<version>/projects/<project>/plugins/shiro-openid-0.5
目录中删除相应的类。当我升级到Grails 2.2.2时,插件重新创建了这些文件,它们与我们项目中的文件冲突。
现在我手动删除了这些类文件,但也许有办法在BuildConfig.groovy
中自动删除它们?这是另一天的问题。