在运行时获取已安装的依赖版本

时间:2014-01-30 20:06:29

标签: java grails grails-plugin

我正在尝试在运行时获取有关特定库的一些信息。到目前为止,我所拥有的是具有以下操作的控制器

def getAboutInfo() {
  Resource resource = grailsApplication.mainContext.getResource('/WEB-INF/resources/jenkinsBuildInfo')
  def config = new ConfigSlurper().parse(resource.getFile().toURI().toURL())
  def sysData = [
    "Application Name": grailsApplication.metadata['app.name'],
    "App Version": grailsApplication.metadata['app.version'],
    "Grails Version": grailsApplication.metadata['app.grails.version'],
    "SVN Revision": config.SVN_REVISION,
    "Build Number": config.BUILD_NUMBER,
    "Build Id": config.BUILD_ID,
    "Java Version": System.getProperty("java.version")
  ]
  def libraryInfo = []

  render([success:true, applicationProperties:sysData,libraryInfo:libraryInfo] as JSON)
}

我想要构建的是关于每个库的信息列表,看起来像这样......

def libraryInfo = []
['tomcat','joda-time','hibernate','group_id:artifact_id'].each{ name->
  def libInfo = // look up information
  libraryInfo << [
    "Name":name,
    Version:libInfo.version,
    "Build Date":libInfo.build_date,
    "Build Number":libInfo.build_number
  ]
}

有人知道这是否可行?

2 个答案:

答案 0 :(得分:1)

您可以使用build-info插件,它可以与您的SCM(Git和SVN)配合使用。它将为您提供以下信息:

  

构建war文件的日期/时间

     

源代码管理修订号(Git和Subversion)

     

申请版本号

     

grails版

     

grails环境(目前正在运行,不一定是   用于构建war文件的环境)

     

安装了插件(以及版本)

来源:build-info plugin

答案 1 :(得分:0)

我最终做的是加载MANIFEST资源并从那里解析出文件名。当它是war文件的一部分并使用嵌入式jar文件构建时,这可以正常工作,jar文件在jar文件名中有库版本。

Gist