在build.gradle中使用Java变量

Jonathan Lu :

有什么方法可以在build.gradle版本字段中使用java变量,这样我每次进行新构建时都不需要手动更改构建脚本?

所以像这样

group = 'project_name'
version = <insert variable from java file>
sourceCompatibility = '1.8'
色拉:

向后使用Java源文件来管理项目的版本。您应该让您的构建系统(在这种情况下为Gradle)来管理版本。当您在Gradle中更新版本时,您应该以这种方式设置构建,以使新版本在整个项目中传播。

在构建脚本中,这很容易实现。您只version需要在需要的任何地方引用该属性即可。这个概念与在应用程序中传递数据没有什么不同。请记住,在Gradle中,构建脚本是用Groovy或Kotlin编写的,并且会应用常规的编程逻辑(构建脚本本质上是同时实现org.gradle.api.Project的对象org.gradle.api.Script)。

更加困难的部分是确保您的应用程序可以看到版本,而不必在构建脚本和源代码中都更新版本。但是,有多种方法可以实现此目的,例如:

  1. 创建一个属性文件作为资源,并使用processResourcesGradle任务将项目的版本注入到该属性文件中。然后在运行时阅读资源以获取应用程序版本。
  2. 创建一个自定义的Gradle任务,该任务会生成一个属性文件作为资源。然后在运行时阅读资源以获取应用程序版本。
  3. 创建一个自定义的Gradle任务,该任务将生成AppVersion.java代表您的应用程序版本的Java源文件(例如)。
  4. 使用jarGradle任务设置Implementation-Version清单属性。然后在运行时读取此属性以获取应用程序的版本。
  5. 如果使用Java 9+和模块,则可以让compileJavaGradle任务设置模块版本。然后,您可以在运行时读取模块版本。

就个人而言,我更倾向于方法#1,#2或#5,而我只会使用方法#3作为最后的手段。我也不确定方法4的可移植性。

您可能还需要考虑将版本保留在gradle.properties文件中,然后从那里将其读取到构建脚本中(Gradle为此提供了API)。这样,当您更新版本时,无需重新编译构建脚本(至少Kotlin DSL就是这种情况)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Build Variants修改gradle'classpath'变量

如何在build.gradle中使用gradle属性

在 build.gradle 中定义一个变量并在网络 XML 文件中使用该值

立即在IDE中使用build.gradle依赖项

如何在gradle.build中使用spring属性?

在Android build.gradle中使用`git describe --match`

如何在build.gradle文件中使用tools:overrideLibrary?

Android在代码中使用Gradle Build风格,例如if情况

如何使 gradle build 在 IntelliJ IDEA 中使用 jdk 1.6

如何在build.gradle中使用最终解析的applicationId

build.gradle警告“避免在版本号中使用+”

在Android Studio中的build.gradle中使用味道尺寸

在build.gradle中使用'model.android.ndk'命令

在gradle android build中使用progaurd生成jar文件

如何使用SBT在build.scala中使用-D变量?

如何在 Jenkins Build 命令中使用变量

在build.gradle中设置变量

在build.gradle中使用自定义Gradle插件的多种方法

如何从 build.gradle 中提取 compileSdkVersion 以在 .travis.yml 中使用?

为什么不能在build.gradle.kts中使用`const val`

在Android中使用build.gradle将translatable = false添加到String资源?

在gradle.build中使用fatjar插件时如何指定主类

Build.gradle 错误

在 eclipsec 命令中使用 -build all 和 -build .* 之间的区别?

使用build.gradle进行部署

在Google Cloud Build中使用Google Cloud Secret作为环境变量

如何通过API获取Azure Devops / TFS中特定BUILD中使用的变量

在Google Build中使用python包

如何使用build.binaries目录变量