【问题标题】:Get value from `build.gradle` to code从`build.gradle`获取值到代码
【发布时间】:2018-08-03 18:16:32
【问题描述】:

我们有一个build.gradle,其中定义了version。我需要实现一个版本端点(如/version)来获取项目的版本。 build.gradle 中的这个version 属性已经存在很长时间了,我无法将它移动到project.properties 文件中。如何从我的 Java 代码中访问这个 version 的值?

【问题讨论】:

  • 在 assemble 任务之前将你在 gradle 中的值附加到你的属性文件中,或者在清单文件中包含版本并使用 getResources 读取它

标签: java gradle build.gradle


【解决方案1】:

您可以通过多种方式将信息“植入”到您的代码中

首先你可以使用清单文件,并从中读取

jar {
  manifest {
    attributes(
      "lib-version": version
  }
}

Reading my own Jar's Manifest结合

另一种选择是在 jar 任务之前将该信息添加到您的属性文件中

task('addVersion') {
    doLast {
       //append the version here, see example
       file("src/main/resources/props.properties").append("version=$version")
    }
}
jar.dependsOn(addVersion)

【讨论】:

    【解决方案2】:

    我们的一个项目不仅需要版本信息,还需要构建时间等。我们使用带有模板替换的复制任务。

    task updateVersions(type: Copy) {
        Properties props = new Properties()
        props.load(new FileInputStream(file('build.properties')))
        props.put("buildtime", new Date().format("dd MMM yyyy hh:mm aa"))
        props.put("version", "${version}")
        from project(':main').file('Version.tmpl')
        into file('src/main/java').path
        expand(props)
        rename('Version.tmpl', 'Version.java')
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多