【问题标题】:Get installed dependency versions at runtime在运行时获取安装的依赖版本
【发布时间】:2014-01-30 20:06:28
【问题描述】:

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

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
  ]
}

有人知道这是否可行吗?

【问题讨论】:

  • 你见过build-info插件吗?
  • 我没有。看起来这就是我需要的。谢谢!如果您发布答案,那么我会将其标记为已回答。 :)

标签: java grails grails-plugin


【解决方案1】:

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

war 文件的构建日期/时间

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

应用版本号

grails 版本

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

已安装插件(以及哪个版本)

来源:build-info plugin

【讨论】:

  • 实际上,通过插件查看,它实际上并没有得到我需要的所有信息。我想获得的不仅仅是安装的插件。我还想获得 Maven 依赖项及其安装的版本。这只是检索配置和 Jenkins 构建信息(我已经拥有)
【解决方案2】:

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

Gist

【讨论】:

    最近更新 更多