渐变属性文件-放置新属性后如何保留注释



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

我用来更新grade.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);

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

最新更新