Gradle如何更改源代码中的版本号

标签 gradle

Java代码:

public static String VERSION = "version_number";

Gradle 构建.gradle

version = '1.0'

如何从grade中设置java代码中的版本?该版本必须是源代码。

有什么方便的方法吗?一个不太好的方法:

  1. 将 java 文件复制到另一个位置,例如构建/更改源
  2. 通过替换 token 来更改源中的版本
  3. 在主源集中添加构建/更改源。

最佳答案

我会做与迈克尔·复活节类似的事情,但有这些差异

  1. 将生成的源代码与主源代码(src/main/java$buildDir/generated/java)分开存储。这样做的额外好处是不需要自定义 gitignore
  2. $buildDir 的子目录中生成,以便 clean 任务将删除生成的源
  3. 使用单独的任务进行代码生成,并提供适当的最新和跳过支持
  4. 使用Copy.expand(Map)进行 token 替换
  5. 由于其基于目录,因此 src/template/java 中的所有内容都将替换 token 。您将来可以轻松添加更多模板

src/template/java/com/foo/BuildInfo.java

package com.foo;
public class BuildInfo {
    public static String getVersion() {
        return "${version}";
    }
} 

build.gradle

task generateJava(type:Copy) {
    def templateContext = [version: project.version]
    inputs.properties templateContext // for gradle up-to-date check 
    from 'src/template/java' 
    into "$buildDir/generated/java" 
    expand templateContext 
} 
sourceSets.main.java.srcDir "$buildDir/generated/java" // add the extra source dir 
compileJava.dependsOn generateJava // wire the generateJava task into the DAG

关于Gradle如何更改源代码中的版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51937034/

相关文章:

Android Studio 构建失败 - 任务 ':app:dexDebug' 执行失败

gradle - 添加Google API后出现Gradle错误

Gradle 无法扩展 ZIP : is not a ZIP archive

git - 如何在Jenkins中更改构建开始文件夹

android - 将 android arsenal 库放入哪个 build.gradle 文件

java - 在同一个构建文件中执行 gradle shadowjar 任务两次

java - 找不到导入 org.mockito.Mock

intellij-idea - 为什么使用 Gradle IntelliJ IDEA 插件?

eclipse - 导入项目时出现Gradle/Eclipse问题

android - 具有多个 key 的 Gradle 签名配置用于同一个 APK