gradle修改Java中的版本号

电脑杂谈  发布时间:2020-07-18 04:10:13  来源:网络整理

gradle版本_gradle 指定jdk版本_更改gradle版本

使用SDK时,您通常需要手动修改版本号. 例如

public class Version{
//先注释掉之前的版本号
   //   public static final String VERSION = "1.0";
//再写上新的版本号
      public static final String VERSION = "1.1";
}

有两个这样的问题:

gradle版本_更改gradle版本_gradle 指定jdk版本

1. 重复性工作. 这完全是人为的.

2. 遗漏的可能性. 如果要为其他人开发SDK,则可能会忘记修改VERSION.

简而言之: 人们不可靠. (强迫安利电影: “”. 结局相反,黑客,人们是最不可靠的)

更改gradle版本_gradle版本_gradle 指定jdk版本

接下来,在gradle的帮助下,一种在编译时自动修改版本号的方法. 确保随时更新代码.

修改版本号,必须在编译之前运行它. 否则,在编译后更改版本号是总的意思吗?因此,我们必须找到gradle可以在编译之前执行的命令: preBuild.

在相应的应用程序项目(或库项目)的build.gradle中,在最后添加文件:

gradle版本_gradle 指定jdk版本_更改gradle版本

//编译之前,执行updateVerion
preBuild.dependsOn updateVersion

这句话在编译之前依赖于updateVersion. updateVersion是我们要执行的任务-修改版本号.

假设Version.java的内容如下:

更改gradle版本_gradle版本_gradle 指定jdk版本

public class Version {
     public static final String VERSION = "2016-08-20";
}

(为了便于修改脚本更改gradle版本,建议此文件中仅包含一个VERSION变量,而另一个则不是必需的. 当然,仅建议使用)

继续加入build.gradle:

//替换版本号
task updateVersion << {
   //Version文件的目录。这里应该改为你的实际目录
    def versionFileDir = projectDir.getAbsolutePath() + File.separatorChar + 'Version.java';
    println versionFileDir;
   //读取旧的version字符串
    def oldVersionStr = findOldVersionStr(versionFileDir);
    println oldVersionStr;
   //获取新的version字符串
    def newVersionValue = getNewVersionValue();
    println newVersionValue;
   //拼接为java的语句
    def newVersionStr = "public static final String VERSION = \"" + newVersionValue + "\";"
    println newVersionStr;
   //重新写入到文件中
    def updatedContent = new File(versionFileDir).getText('UTF-8').replaceAll(oldVersionStr, newVersionStr);
    new File(versionFileDir).write(updatedContent, 'UTF-8')
}
//读取旧的version字符串
def findOldVersionStr(path) {
    def readerString = "";
    new File(path).withReader('UTF-8') { reader ->
        reader.eachLine {
            //读取一行,如果发现有"VERSION"字符,说明是我们要修改的那一行。
            if (it.contains("VERSION")) {
                //保存it到string,然后返回
                readerString <<= it
                return readerString
            }
        }
        return readerString
    }
}
//获取新的版本号
def getNewVersionValue() {
   //举例:用日期作为版本号
    def date = new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"));
    return date;
}

重建后更改gradle版本,它将自动修改Version的值.

整个过程是:

阅读旧文本行,替换新行,然后重写. 编译前依赖任务.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-284293-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...