Как я могу преобразовать файл .properties во время сборки Gradle? - PullRequest
25 голосов
/ 27 января 2012

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

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

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

Ответы [ 4 ]

33 голосов
/ 12 декабря 2013

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

    ant.propertyfile(
        file: "myfile.properties") {
        entry( key: "propertyName", value: "propertyValue")
        entry( key: "anotherProperty", operation: "del")
    }
7 голосов
/ 28 января 2012

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

ant.replace(file: "blah", token: "wibble", value: "flibble")
3 голосов
/ 27 января 2012

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

2 голосов
/ 27 декабря 2017

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

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

var.load(myfile.newDataInputStream())
var.setProperty("db", "prod")
var.store(myfile.newWriter(), null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...