2016-11-01 73 views
2

我正在研究一个Grails插件,其主要贡献是taglib。在Grails 3.1.11中,它工作正常。我也有一个简单的Grails应用程序来测试插件。输入Grails 3.2.2。升级插件无法从Grails 3.1.11升级到3.2.2

迁移插件和应用3.2.2插件后显示无生命迹象。插件doWithApplicationContext闭包在应用程序启动时不再执行。 gsp:s找不到taglib。我通过使用Grails 3.2.2创建一个新的插件和应用程序来完成迁移,然后填写源代码。

对不起,这个模糊的问题,但我要拉什么字符串找出什么是错的?

编辑1:是的,我做了仔细的检查,有应用程序依赖于插件的一个不存在的版本,并得到了预期的冲突。所以并不是说插件完全与应用程序分离。

编辑2:包装上grails.pluginsorg.grails.plugins警告消息出现设置调试日志记录后。它来自org.grails.plugins.CorePluginFinder。它无法找到插件描述符(... Plugin.groovy)。我检查了插件jar,在一个以BOOT-INF为根的文件层次结构中找到了插件描述符类。显然,插件加载器没有考虑到这个层次。我以为我看到一个Grails错误,因为我不知道Boot重新打包。我在这里添加了一个帖子,但是在得到Graeme的回答之后,我删除了这篇文章,因为它减少了注意力。

+0

实在是没有解决的问题,而伟大的方式知道如何写东西。有很多事情可能是错误的。 –

+0

我会从创建一个全新的3.2.2插件开始,并将其构建文件复制到您的升级项目中,以确保所有依赖关系都在那里同步。 –

+0

我也会downvote这样一个愚蠢的问题:)非常希望在Grails doco是一个关键的内部软件包列表设置更详细的日志级别。在Grails 2中,日志配置默认带有这样的列表。在这种情况下,应用程序开始没有投诉,仍然无法正常工作。一个更好的问题是,给我一些日志设置来解决问题。我遇到了困难。 – sodastream

回答

4

你们看到的是,如果你在一个插件,则bootRepackage任务运行的运行gradle assemble当您计划使用该插件从应用程序重新打包是不是你想要的是什么插件JAR作为一个可运行的JAR 。

如果您只是运行gradle publishgradle publishToMavenLocalgradle jar那么您将得到未被Boot重新打包的JAR文件。据我所知,这不是从Grails 3.1的变化。

您还可以禁用引导在插件build.gradle一起重新包装,如果你不打算使用该插件作为一个实际的应用程序或可运行的JAR文件:

bootRepackage.enabled = false 
+0

非常感谢,这是正确答案,我已经测试过了。但是,显然有些事情已经发生了变化,在3.2.2下重复了与3.1相同的构建/安装步骤。11带来不同的结果。这可能是一个文档问题。 3.2.2指南说运行'grails install'(18.1安装本地插件)。但是,该命令不存在。 'gradle install'存在,但显然调用Boot重新打包,'gradle publishToMavenLocal'不重新打包。 – sodastream