niedziela, 9 lutego 2014

maven best practices - enforce plugin, (logback, slf4j)

Enforce plugin

OK,;) Analiza problemu.(przykład)
Używając Springa jako zależności sam spring ładuje sobie z automatu commons-logging.jar. Czy to jest dobre ? - nie. Nie chcemy używać dziadowskiego commons-logging wolimy wykorzystać nowy stos logowania np slf4j i logback . Pomimo, że temat strategii logowania bardzo odbiega od tematu posta postanowiłem go trochę rozwinąć.

Slf4j to nic innego jak implementacja wzorca fasada.
Logback to 'syn' log4j stworzony i zaimplementowany przez tego samego autora.




Zalety logback w porównaniu do swojego poprzednika są następujące :

- znacznie szybsze działanie – lepsza implementacja
- automatyczne przeładowanie oraz zmiany konfiguracji loggera
- wyświetlanie informacji co do właściciela klasy – t.j jara
- lepsze filtrowanie
- automatyczna kompresja i archiwizacja plików z logami
- automatyczne usuwanie starych archiwów
- śledzenie danego kawałka kodu po zadanym markerze
- konfiguracja w XML lub groovy
 
- natywna komunikacja z slf4j bez jakiekolwiek innego narzutu.


Resztę powodów dla których warto od razu przesiąść się na logbacka znajdziesz tutaj


Polecam bardzo te biblioteki. Ja osobiście wykorzystuje je od dawna na rzecz starego już log4j.

TIP : Wszędzie używaj Slf4j jako fasady systemów logowania oraz logback jako jednej z implementacji. Zapewni Ci to szybkość działania, konfigurowalność i niesamowitą elestyczność. 

Zasady działania logback'a znajdziesz tutaj  i  właśnie z tego bloga pochodzą poniższe rysunki.
































Zestawienie slf4j wygląda następująco :






















Przykład wykorzystania znajdziesz tutaj.


Ok. Wracajmy do pluginu enforce. Poniżej widzimy, że podczas kompilacji źródeł wystąpił błąd.
po wykonaniu komendy mvn depencency:tree określamy miejsce wysŧępowania zależności niechcianej biblioteki. Znalazł się winowajca. Jest nim spring.

Teraz musimy tylko exludować daną bibliotekę i gotowe.

recepta :
Przypadek nr czyli wybieramy stabilne wersje pluginów : 1.3.1

plugin update

Plugin maven enforce możemy użyć do różnych stadium przypadków problemów z naszym wytwarzaniem np :
- zakładając restrykcję na wersje javy 
- zakładając restrykcję na wersje mavena 
- zakładając restrykcję na wersje danej biblioteki lub jej występowanie 
- zakładając restrykcję na wersje plugina 
- zakładając restrykcję na występowanie danego pliku np : changeLog.txt 
i wiele innych ich spis znajdziesz tutaj

Przykładowa konfiguracja enforce plugin:

Czyli : nie chcemy wykorzystywać hibernate w wersji 3, adaptera slf4j dla log4j, samego log4j, commons-logging oraz narzucamy wykorzystanie javy w tym przypadku od 1.7 do 1.8v.

TIP : Jeśli używasz mavena zawsze użyj enforce plugin. Uchroni Cie on od nieprzewidzianych kłopotów oraz pozwoli na zdefiniowanie polityki restrykcji dla zależności oraz innych funkcji i zasad w Twoim projekcie.
cdn

Brak komentarzy:

Prześlij komentarz