2014-06-13 18 views
5

Używam wtyczki config var dla heroku (zobacz https://devcenter.heroku.com/articles/config-vars).Dodaj pojedynczy plik do gradle zasobów

Pozwala mi to używać pliku .env, którego nie wypycham do kontroli źródła, aby zdefiniować środowisko heroku.

Kiedy jestem na Heroku, mogę uzyskać dostęp do sensownych informacji za pośrednictwem System.properties.

W dev, chciałbym przeczytać z tego pliku, więc byłoby najlepiej, gdyby był on w mojej ścieżce klasy.

Plik .env leży u podstaw mojego projektu, więc nie mogę użyć czegoś takiego:

sourceSets { 
    main { 
     resources { 
      srcDirs = ['src/main/resources', '/'] 
     } 
    } 
} 

Co jest najprostszym sposobem, aby to pojedynczy plik do Gradle zasobów?

Odpowiedz

1

Co skończyło się robi było dodanie katalogu projektu w folderze zasobów w tym tylko plik nie był zainteresowany w:

sourceSets.main.resources { srcDir file('.') include '.env' } 

Wydaje rade. Zastanawiam się, czy jest to najlepsze rozwiązanie myślał

+0

co jeśli mam więcej niż jeden katalog, na przykład 'A, B, C,' dla katalogu 'C', potrzebuję tylko' C/my.properties', ale dla 'A' i' B', I potrzebujesz wszystkich plików – enyo

+0

co zrobisz, jeśli chcesz nadać mu inne imię w słoiku? –

+2

To rozwiązanie działa, ale (jak wspomniano powyżej) wzór "include" jest następnie używany dla WSZYSTKICH srcDirs, a nie tylko jednego. Zastanawiam się, jak można to zrobić, dodając jeden plik do istniejących srcDirs. – Marwin

3

Po połączeniu poprzednią odpowiedź tutaj o kolejne wskazówki od innych stron, wymyśliłem następujące rozwiązanie:

sourceSets { 
    specRes { 
    resources { 
     srcDir 'extra-dir' 
     include 'extrafiles/or-just-one-file.*' 
    } 
    } 
    main.resources { 
    srcDir 'src/standard/resources' 
    srcDir specRes.resources 
    } 
} 
processResources { 
    rename 'some.file', 'META-INF/possible-way-to-rename.txt' 
} 

ja wciąż zastanawiam się, czy jest jakiś lepszy sposób.

+1

Skutkiem ubocznym jest również dodanie nowego zadania 'specResClasses', które prawdopodobnie nie jest zgodne z zamierzeniami. Powtórzyłem pytanie na forach gradle, aby sprawdzić, czy ktoś ma lepszy sposób: https://discuss.gradle.org/t/how-to-add-a-single-extra-resource-to-the-isting- zasoby/17070 – whaleberg

1

Wcześniejsze odpowiedzi wydawały się bardziej skomplikowane, niż oczekiwałem, więc poprosiłem o numer gradle forums i otrzymałem odpowiedź od Sterling Green, która jest jednym z głównych programistów.

Zasugerował konfigurowania processResources bezpośrednio

processResources { 
    from(".env") 
} 

Wspomniał też, że to może być zły pomysł, aby to korzeń projekt jako wejście bezpośrednio.