Ответ 1
Вы можете использовать задачу ant.propertyfile:
ant.propertyfile(
file: "myfile.properties") {
entry( key: "propertyName", value: "propertyValue")
entry( key: "anotherProperty", operation: "del")
}
Как часть задачи развертывания в Gradle, я хочу изменить значение свойства в foo.properties
, чтобы указать на производственную базу данных вместо базы данных разработки.
Я предпочел бы не полностью заменить весь файл, поскольку он довольно большой, и это означает, что нам нужно будет поддерживать две отдельные версии, которые отличаются только одной строкой.
Каков наилучший способ для этого?
Вы можете использовать задачу ant.propertyfile:
ant.propertyfile(
file: "myfile.properties") {
entry( key: "propertyName", value: "propertyValue")
entry( key: "anotherProperty", operation: "del")
}
Вы должны уметь выполнить задачу ant "replace", которая делает то, что вы хотите: http://ant.apache.org/manual/Tasks/replace.html
ant.replace(file: "blah", token: "wibble", value: "flibble")
Простое решение состоит в том, чтобы закодировать задачу, которая использует java.util.Properties
для записи файла. Если вы действительно хотите постепенно обновлять файл, вам придется реализовать это самостоятельно. Или, может быть, вы найдете задачу Ant, которая делает то, что вы хотите (все Ant задачи могут быть использованы как-из Gradle). Для достижения наилучших результатов вы также должны объявлять входы и выходы задачи, чтобы Gradle выполнял задачи только тогда, когда файл свойств должен быть изменен.
Создайте объект свойств, затем создайте объект с целевым файлом свойств свойств, загрузите файл в объект свойства с загрузкой, установите требуемое свойство с помощью setProperty и сохраните изменения в хранилище.
def var = new Properties()
File myfile = file("foo.properties");
var.load(myfile.newDataInputStream())
var.setProperty("db", "prod")
var.store(myfile.newWriter(), null)