2012-01-27 10 views
21

W ramach zadania wdrażania w programie Gradle chcę zmienić wartość właściwości w foo.properties, aby wskazywała na produkcyjną bazę danych zamiast na programistyczną bazę danych.Jak mogę przekształcić plik .properties podczas kompilacji Gradle?

Wolałbym nie zastąpić całego pliku wprost, ponieważ jest dość duży i oznacza, że ​​będziemy musieli zachować dwie oddzielne wersje, które różnią się tylko w jednej linii.

Jaki jest najlepszy sposób, aby to osiągnąć?

Odpowiedz

28

Można użyć zadania ant.propertyfile:

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

Proste rozwiązanie polega na zakodowaniu zadania, które wymaga napisania pliku z użyciem java.util.Properties. Jeśli naprawdę chcesz stopniowo aktualizować plik, musisz go wdrożyć na własną rękę. A może znajdziesz zadanie Ant, które robi to, co chcesz (wszystkie zadania Ant mogą być używane tak jak są z Gradle). Aby uzyskać najlepsze wyniki, należy również zadeklarować wejścia i wyjścia zadania, aby Gradle wykonywał tylko te zadania, gdy plik właściwości wymaga zmiany.

+0

Można również użyć Apache Commons konfiguracje bibliotekę, która zapewnia wygodny API (http://commons.apache.org/configuration/userguide/howto_filebased.html). Oczywiście nadal będziesz musiał wdrożyć większość logiki samodzielnie. – rodion

+0

Aplikacja Ant's [zadanie PropertyFile] (http://ant.apache.org/manual/Tasks/propertyfile.html) wykonała dokładnie to, czego potrzebowałem. –

1

Stwórz właściwości obiekt, a następnie utwórz obiekt pliku z docelową ścieżką pliku właściwości, załaduj plik na obiekcie właściwości przy użyciu polecenia load, ustaw pożądaną właściwość za pomocą metody setProperty i zapisz zmiany w magazynie.

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

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

Proszę dodać dokumentację/wyjaśnienie. –

Powiązane problemy