2009-08-06 8 views
5

Mam aplikację, która używa kilku plików konfiguracyjnych (pozwól tylko rozważyć tutaj appli.properties). Pliki te zawierają kilka wartości zależnych od środowiska. Możemy znaleźć jakieś informacje, takie jak:Jak filtrować zasoby podczas kompilacji w projekcie Eclipse?

server.port=${envi.server.port} 

po drugiej stronie, mam zestaw plików właściwości, jeden na środowisko (dev.properties, homolo.properties, etc.). Zawierają wartości niektórych właściwości w plikach konfiguracyjnych. Możemy znaleźć tutaj tego rodzaju właściwości:

envi.server.port=4242 

Mój build jest obsługiwany przez Maven2. Wszystko działa dobrze.

Jednak teraz muszę zaimportować mój projekt do Eclipse. Moją główną obawą jest filtrowanie plików konfiguracyjnych. Rzeczywiście, jeśli nie zmienię niczego w moim parametrze Eclipse dla mojego projektu (po mvn eclipse: eclipse command), wówczas cały mój plik konfiguracyjny zachowa klucze właściwości (tj. ${envi.server.port}) zamiast ich wartości. I z takimi plikami konfiguracyjnymi, moja aplikacja nie będzie działać wewnątrz Eclipse ...

Spróbowałem więc dwa rozwiązania:

  • w pełnym wymiarze Maven rozwiązanie, używając wtyczki m2eclipse. Dodaję Maven Builder do konfiguracji projektu, a następnie za każdym razem, gdy tworzona jest kompilacja, filtrowanie odbywa się na plikach.
  • Ant (która jest używana tylko w środowisku Eclipse). Mam hardly zdefiniowane zadanie, które symuluje filtrowanie plików Maven2 w Ant. To zadanie jest przeznaczone tylko do filtrowania, bez kompilacji.

Powszechnym problemem tych dwóch rozwiązań jest to, że filtrowanie odbywa się przy każdej operacji (zasadniczo zapisuje się w klasie Java), a następnie wymaga czasu. Drugie rozwiązanie jest jednak szybsze (3 sekundy) niż pierwsze (ponad 10 sekund).

Co sądzisz o moim podejściu? Jak mógłbyś to zrobić w lepszy sposób?

+0

Nie rozumiem problemu z korzystaniem z Mavena do filtrowania właściwości. –

+0

@Mike Jeśli rozumiem to poprawnie, to jest to, że kompilacja Mavena jest uruchamiana przy każdej zmianie i zajmuje ~ 10 sekund, aby wykonać filtrowanie, to przeszkadza. –

Odpowiedz

2

Jeśli zasoby nie są zmieniane tak często, można ustawić kompilację Mavenu tak, aby uruchamiała się tylko po czystej kompilacji, wtedy nie będzie tak łatwo wtrącać się, to jednak nie robi nic, aby przyspieszyć budowę.

Jeśli chodzi o filtrowanie szybciej, nie znam żadnego innego prostego mechanizmu, który pomoże, jak już powiedziałeś, że potrzebujesz Ant lub Maven do uruchomienia filtrowania, a oboje potrzebują trochę czasu, aby ustawić przed budową, powodując spowolnienie.

Jeśli powoduje to wiele problemów, można napisać niestandardową Incremental Eclipse builder, która wykonuje filtrowanie na deltach. To powinno być znacznie szybsze, ale oczywiście znacznie więcej wysiłku, aby napisać.

Powiązane problemy