0

我有一个我编写的 Grails 插件,它在我们的持续集成环境中使用 set-version 设置了它的版本。在构建时,我想以编程方式从“eventCompileEnd”事件挂钩中输出版本。因此,对于我的 Grails 应用程序,我只能获取“app.version”元数据,但插件版本是在插件根目录的 GrailsPlugin.groovy 文件中设置的。有什么方法可以访问该值吗?这是我指的版本信息:

class MyUtilityGrailsPlugin {
   // the plugin version
   def version = "4.6.8"

   // the version or versions of Grails the plugin is designed for
   def grailsVersion = "2.1 > *"

   ...etc.
4

2 回答 2

3

您可以使用应用程序的以下eventCompileEnd事件_Events.groovy来获取应用程序中使用的所有插件的名称和版本,GantBinding默认情况下可用于后编译事件。您可以根据以下内容过滤插件信息name

//scripts/_Events.groovy
eventCompileEnd = {msg->
    msg.supportedPluginInfos.each{println "${it.name} - ${it.version}"}
}

如果您想从其他任何地方(例如:BootStrap)访问插件信息,使用applicationContext将是最简单的方法。像下面这样的东西会很有用:

//Bootstrap.groovy
def grailsApplication

def init = { servletContext ->
    grailsApplication.mainContext.getBean('pluginManager')
                                 .allPlugins.each{plugin->
        println "Plugin Info ${plugin.name} - ${plugin.version}"
    }
}

在您的情况下, appCtx 在编译后事件中将不可用,因此您必须依赖GantBinding.

于 2013-11-03T18:33:00.587 回答
0

我发现可以通过执行以下操作从该插件的事件挂钩中检索版本信息:

pluginSettings.getPluginInfo(isPluginProject.getParent()).version;

pluginSettings 是当前范围内的绑定变量,isPluginProject 实际上返回一个 File 对象,该对象表示 GrailsPlugin.groovy 文件。

于 2013-11-04T13:12:58.587 回答