groovy - gradle 属性文件 - 放置新属性后如何保留评论?

标签 groovy gradle android-gradle-plugin

每当我向 gradle.properties 文件添加属性时,文件中的注释都会被删除。我想保留所有评论。注释被定义为任何带有#

我用来更新 gradle.properties 文件的任务如下所示:

task updateSomeProperty << {
    if(project.hasProperty('mynewProperty')) {
        File gradleProperties = file("gradle.properties")
        Properties props = new Properties()
        props.load(new FileInputStream("gradle.properties"))
        props.put("moldProperty",project.getProperty('mynewProperty'))
        props.store(new FileWriter(gradleProperties),null);
        println 'Updated old property to new property.'
    }

}

在命令行上我运行 gradle updateSomeProperty -PmynewProperty=1234
一切正常,属性被注入(inject)文件,但文件中的注释被清除。注意我是如何在 props.store(new FileWriter(gradleProperties),null); 中使用 null 的。我在想,如果我通过了一个空评论,它会保留评论,但它不起作用。我该怎么做呢 ?

如果我无法保留评论,有没有办法获取所有评论,然后我可以使用 fileWriter 命令将它们放回去:
props.store(new FileWriter(gradleProperties),MY_COMMENTS);

最佳答案

不幸的是,根据 Properties#store(),因为您使用的是普通的 java 属性实例。方法,comments 参数是一个新的注释,而且它只是新保存的属性文件的第一行的注释。如果你想存储预览评论,你应该尝试一些其他的解决方案。例如,您必须提供自己的实现 pf 属性并使用它将新属性存储在外部属性文件中。您可以在 Internet 上找到一些示例,例如 one here .但可以肯定的是,Gradle 脚本似乎并不简单。

关于groovy - gradle 属性文件 - 放置新属性后如何保留评论?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33552415/

相关文章:

Gradle:无法在构建脚本的范围内获取插件类

grails - 如何捕获 addToTag() 中的错误 [grails]

android - 错误 :Module 'app' : platform 'Google Inc.:Google APIs:23' not found

spring-boot - 编译发现gradle的错误版本

jar - Gradle,合并来自根和子项目的类

android - 如何以编程方式获取 Gradle 模块名称

android - 错误 :Execution failed for task ':app:processDebugGoogleServices' . 安卓

maven - 如何在 Groovy 中导入 jenkins-api?

java - Android库模块中的依赖

groovy - 使用 Final 字段对 Groovy 生成的 getter 进行 Spock 调用