gradle属性文件 - 在放置新属性后如何保留注释?

时间:2015-11-05 18:47:00

标签: groovy gradle android-gradle

每当我向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

一切正常,属性被注入文件,但文件中的注释被清除。注意我在props.store中使用null(new FileWriter(gradleProperties),null);我在想如果我通过了一个空的评论它会保留评论,但它不起作用。我该怎么做?

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

1 个答案:

答案 0 :(得分:0)

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