groovy 如何使用WriteProperties Gradle API编写属性文件?

4ioopgfo  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(117)

我尝试在Gradle任务中将一些键值对写入属性文件,我发现Gradle为此提供了一个API WriteProperties,但我无法使用它。
我尝试了不同的方法(我正在学习Gradle,所以我不知道是否使用了一些不正确的语法):
1.

task myTask {
    doLast {
        WriteProperties {
            outputFile = file 'prop.properties'
            encoding = 'UTF-8'
            properties = [TEST:42]
        }
    }
}
task myTask {
    doLast {
        def writer by register(WriteProperties.class) {
            outputFile = file 'prop.properties'
            encoding = 'UTF-8'
            properties = [TEST:42]
        }
    }
}
task myTask {
    doLast {
        // Other stuff
    }
}

task writeProperty(type: WriteProperties) {
    outputFile = file 'prop.properties'
    encoding = 'UTF-8'
    properties = [TEST:42]
}

writeProperty.dependsOn myTask
task myTask {
    doLast {
        // Other stuff
    }
    finalizedBy writeProperty
}

task writeProperty(type: WriteProperties) {
    outputFile = file 'prop.properties'
    encoding = 'UTF-8'
    properties = [TEST:42]
}
task myTask {
    doLast {
        // Other stuff
    }
}
class MyPlugin implements Plugin<Project>{
    void apply(Project project) {
        project.task('writeProperty') {
            WriteProperties {
                outputFile = file 'prop.properties'
                encoding = 'UTF-8'
                properties = [TEST:42]
            }
        }
    }
}
apply plugin: MyPlugin
writeProperty.dependsOn myTask

他们都没有用这些值创建文件。有没有其他方法可以做到这一点?我想知道使用WriteProperties API的正确方法,因为文档现在没有任何有用的示例。
我找到了用java语法创建Properties()对象和写入文件的解决方案,但没有一个是用这个API的。

ibrsph3r

ibrsph3r1#

我正在使用纯Gradle/Groovy创建一个属性文件,如下所示:

file "$buildDir/prop.properties" write [ TEST:42 ].collect{ k, v -> "$k=$v" }.join( '\n' )

file "$buildDir/prop.properties" withWriter{ out ->
  [ TEST:42 ].each{ k, v -> out << k << '=' << v << '\n' }
}

相关问题