Mam projekt Java Spring, skonfigurowany z Maven. Ponieważ liczba testów jednostkowych i ich pliki konfiguracyjne szybko się sumują, staram się scentralizować konfiguracje testowe do jednego pliku właściwości (tego samego, który jest używany przy budowaniu projektu).Określanie ścieżki Java dla pliku właściwości
Jednostka Testy znajdują się (w stosunku do ścieżki projektu, oczywiście) w drzewie
src/test/java/com (...)
Pliki zasobów dla tych badań są w
src/test/resources(...)
i wreszcie, plik właściwości, co plik zasobów należy czytać, jest w katalogu
src/main/filters
teraz mam klasy Junit gdzie mogę określić lokalizację pliku konfiguracyjnego tak:
@ContextConfiguration(locations = { "classpath:com/initrode/quartz/SyncManagerJobTest-context.xml"})
w pliku konfiguracyjnym SyncManagerJobTest-context.xml istnieje linia
<context:property-placeholder location="/src/main/filters/deploy.local.properties"/>
Skutkuje to we właściwościach pliku, który ma być odczytany z katalogu. Chciałbym przeczytać plik właściwości, który znajduje się pod src/main/filters. Próbowałem używać ../../ do przechodzenia do katalogu w górę, ale to nie pomogło. Używanie ścieżki klasy: też się nie udało. Mógłbym użyć bezwzględnej ścieżki z "file:", ale to wymagałoby od każdego programisty w projekcie modyfikacji konfiguracji, co również nie jest dobre.
Podsumowując, pytanie brzmi: jak mogę wymusić plik konfiguracyjny w src/test/resources /, aby odczytać plik właściwości w src/main/filters?
I powiązane pytanie dodatkowe: czy podczas obsługi plików w środowisku Java istnieją inne modyfikatory niż "file:" i "classpath:"?
Położenie pliku właściwości prawdopodobnie nie jest najlepszy, ale pracuję nad istniejącego projektu, będę po prostu zostawić to jest .. Mamy trzy różne właściwości dla różnych środowisk produkcyjnych. Podczas tworzenia aplikacji istnieje wiele właściwości do skonfigurowania, db, ldap i tak dalej. Posiadanie dwóch lokalizacji zasobów oznaczałoby konieczność zachowania dwóch plików właściwości, które moim zdaniem nie są idealne. Dzięki za linki, sprawdzę je. – simon
Nie jestem pewien, aby zrozumieć, co masz na myśli mówiąc "mając dwie lokalizacje zasobów" i tak nie jest to wymagane. Ale jeśli masz różne środowiska produkcyjne, nie musisz zarządzać różnymi dla każdego środowiska? O tym mówią linki (w maven). –
@Pascal jest to dobry punkt (+1), ale z innych części pytania myślę, że OP nie może oznaczać filtr w sensie Maven. Tak więc pliki powinny prawdopodobnie wejść do src/main/resources. Podczas pracy z istniejącą strukturą projektu może nie być to możliwe, dlatego moje obejście problemu –