我有一个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.
答案 0 :(得分:3)
您可以在应用的eventCompileEnd
中使用以下_Events.groovy
事件,从GantBinding
获取该应用中使用的所有插件的名称和版本,默认情况下该帖子可用于该帖子编译事件。您可以根据name
:
//scripts/_Events.groovy
eventCompileEnd = {msg->
msg.supportedPluginInfos.each{println "${it.name} - ${it.version}"}
}
如果您想使用applicationContext
从任何其他地方(例如:BootStrap)访问插件信息,这将是最简单的方法。像下面这样的东西会很有用:
//Bootstrap.groovy
def grailsApplication
def init = { servletContext ->
grailsApplication.mainContext.getBean('pluginManager')
.allPlugins.each{plugin->
println "Plugin Info ${plugin.name} - ${plugin.version}"
}
}
在您的情况下,appCtx将无法在后期编译事件中使用,因此您必须依赖GantBinding
。
答案 1 :(得分:0)
我发现可以通过执行以下操作从该插件的事件挂钩中检索版本信息:
pluginSettings.getPluginInfo(isPluginProject.getParent()).version;
pluginSettings是当前作用域中的绑定变量,isPluginProject实际上返回一个表示GrailsPlugin.groovy文件的File对象。