Подтвердить что ты не робот

Как я могу преобразовать файл .properties во время сборки Gradle?

Как часть задачи развертывания в Gradle, я хочу изменить значение свойства в foo.properties, чтобы указать на производственную базу данных вместо базы данных разработки.

Я предпочел бы не полностью заменить весь файл, поскольку он довольно большой, и это означает, что нам нужно будет поддерживать две отдельные версии, которые отличаются только одной строкой.

Каков наилучший способ для этого?

4b9b3361

Ответ 1

Вы можете использовать задачу ant.propertyfile:

    ant.propertyfile(
        file: "myfile.properties") {
        entry( key: "propertyName", value: "propertyValue")
        entry( key: "anotherProperty", operation: "del")
    }

Ответ 2

Вы должны уметь выполнить задачу ant "replace", которая делает то, что вы хотите: http://ant.apache.org/manual/Tasks/replace.html

ant.replace(file: "blah", token: "wibble", value: "flibble")

Ответ 3

Простое решение состоит в том, чтобы закодировать задачу, которая использует java.util.Properties для записи файла. Если вы действительно хотите постепенно обновлять файл, вам придется реализовать это самостоятельно. Или, может быть, вы найдете задачу Ant, которая делает то, что вы хотите (все Ant задачи могут быть использованы как-из Gradle). Для достижения наилучших результатов вы также должны объявлять входы и выходы задачи, чтобы Gradle выполнял задачи только тогда, когда файл свойств должен быть изменен.

Ответ 4

Создайте объект свойств, затем создайте объект с целевым файлом свойств свойств, загрузите файл в объект свойства с загрузкой, установите требуемое свойство с помощью setProperty и сохраните изменения в хранилище.

def var = new Properties() 
File myfile = file("foo.properties");

var.load(myfile.newDataInputStream())
var.setProperty("db", "prod")
var.store(myfile.newWriter(), null)