在 build.gradle 中使用 java 变量
Using java variable in build.gradle
有什么方法可以在我的 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
的对象).
更困难的部分是确保您的应用程序可以看到版本,而无需更新构建脚本和源代码中的版本。但是,有多种方法可以实现这一点,例如:
- 创建一个属性文件作为资源,并使用
processResources
Gradle 任务将项目的版本注入到所述属性文件中。然后在运行时读取资源以获取应用程序版本。
- 创建一个自定义 Gradle 任务,该任务生成一个属性文件作为资源。然后在运行时读取资源以获取应用程序版本。
- 创建一个自定义 Gradle 任务,该任务生成代表您的应用程序版本的 Java 源文件(例如
AppVersion.java
)。
- 使用
jar
Gradle 任务设置清单的 Implementation-Version
属性。然后在运行时读取此属性以获取应用程序的版本。
- 如果使用 Java 9+ 和模块,那么您可以让
compileJava
Gradle 任务设置模块版本。然后你可以在运行时读取模块版本。
您可能还想考虑将版本保留在 gradle.properties
文件中,然后从那里将其读入您的构建脚本(Gradle 为此提供了一个 API)。这样,当您更新版本时,构建脚本就不必重新编译(至少 Kotlin DSL 是这样)。
有什么方法可以在我的 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
的对象).
更困难的部分是确保您的应用程序可以看到版本,而无需更新构建脚本和源代码中的版本。但是,有多种方法可以实现这一点,例如:
- 创建一个属性文件作为资源,并使用
processResources
Gradle 任务将项目的版本注入到所述属性文件中。然后在运行时读取资源以获取应用程序版本。 - 创建一个自定义 Gradle 任务,该任务生成一个属性文件作为资源。然后在运行时读取资源以获取应用程序版本。
- 创建一个自定义 Gradle 任务,该任务生成代表您的应用程序版本的 Java 源文件(例如
AppVersion.java
)。 - 使用
jar
Gradle 任务设置清单的Implementation-Version
属性。然后在运行时读取此属性以获取应用程序的版本。 - 如果使用 Java 9+ 和模块,那么您可以让
compileJava
Gradle 任务设置模块版本。然后你可以在运行时读取模块版本。
您可能还想考虑将版本保留在 gradle.properties
文件中,然后从那里将其读入您的构建脚本(Gradle 为此提供了一个 API)。这样,当您更新版本时,构建脚本就不必重新编译(至少 Kotlin DSL 是这样)。