在Spring Security Core插件GitHub回购中,我看到Graeme于5月21日发布了Grails 2,{2} Grails从2.0到2.3之前的RC4版本在几个月之后发布,但我没有看到任何解释为什么它是不匹配的依赖项,错误报告等吗?
我运行了一个2.2.4应用程序,我不想在此时升级只是为了获得最新的弹簧安全核心RC。我理解upped the required version是否导致与旧版Grails的不匹配依赖,因为我之前遇到过相同的问题。
这最初是由于我维护的spring security OAuth2提供程序插件上的upgrade to 3.2.0.RELEASE of spring security。 pull请求将所需版本提升到2.3,请求者指出我将RC4版本的内核作为原因。
感谢您一如既往的好作品!
答案 0 :(得分:1)
这是我的纯粹推测,但据我所知,它与Grails 2.3中getNamespace()
界面中引入的UrlMappingInfo
方法有关。
Spring Security Core插件的类AnnotationFilterInvocationDefinition
确实在它尝试调用getNamespace()之前检查它是否处理Grails 2.3或更高版本,但在其当前状态下它会导致编译错误(由于缺少方法)
我认为该类可以使用反射API来解决这个问题,从而可以将需求降低到Grails 2.2.0(或保持在2.0.0)
String namespace = null;
try {
Method m = mapping.getClass().getDeclaredMethod("getNamespace", null);
namespace = (String)m.invoke();
} catch(NoSuchMethodException e) { ... }