26 lutego 2008

Wicket 1.3.1 i Spring Framework 2.5.1 jednak współpracują

Tak niewiele było trzeba, aby przekonać Apache Wicket 1.3.1 do współpracy ze Spring Framework 2.5.1. Wczorajszy wpis "Globalizacja" obiektów Wicketa ze Spring Framework wzbudził zainteresowanie Waldiego, który swoim komentarzem z kolei sprowokował mnie do głębszego zastanowienia nad sposobem uaktualnienia trochę już zakurzonej zależności Wicket 1.3.1 od Spring Framework 2.0. Czy to nie-mavenowe rozwiązanie Waldka czy po prostu jego wizyta w moim Notatniku, ale to wystarczyło, abym wpadł na to właściwe mavenowe rozwiązanie. Coraz częściej daje się słyszeć utyskiwania na zarządzanie zależnościami przez Apache Maven 2, ale w tej sytuacji spisał się zgodnie z oczekiwaniami. Uruchomienie Spring Framework 2.5.1 oraz Wicket 1.3.1 sprowadza się do następującej zmiany w pom.xml w projekcie mojej demonstracyjnej aplikacji:
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-spring</artifactId>
<version>${wicket.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.1</version>
</dependency>
Najistotniejszą zmianą jest wykluczenie zależności org.springframework.spring z zależności org.apache.wicket.wicket-spring za pomocą elementu exclusions i samodzielne dopisanie zależności org.springframework.spring.2.5.1 do projektu. Tyle! Dziękuję Waldek za inspirację! Czasami trzeba zwykłego pytania/sugestii/po prostu pogadać z kimś kto się tym również para/interesuje, aby rozwiązać zadanie w parę sekund.

Dla upiększenia przykładu dodałem wyświetlenie wersji Springa w etykiecie na stronie do uwierzytelnienia użytkownika. Zmiana w kodzie klasy-strony pl.jaceklaskowski.wicket.PrzedstawSie:
// wyświetl wykorzystywaną wersję Spring Framework
loginForm.add(new Label("springVersion", SpringVersion.getVersion()));
Zmiana wymagała dodania odpowiadającemu etykiecie elementowi span na stronie HTML - PrzedstawSie.html:
<tr>
<td colspan="3">
Wersja Spring Framework: <b><span wicket:id="springVersion">Wersja Spring Framework</span></b>
</td>
</tr>
Uruchomienie aplikacji z tą zmianą wyświetliło poprawną wersję Springa.


Takiej inspiracji mi trzeba było! Z pozdrowieniami dla Waldka!

3 komentarze:

  1. właśnie siedzę i męczę Mavena2, tak więc ta wiedza też mi się przyda ;-)
    tylko znów powoduje to "puchnięcie" pom.xml ;-(
    może w końcu maven2 przejdzie na atrybuty tak jak to jest w branchu maven-db, który to bardzo ładnie rozwiązuje ;D

    OdpowiedzUsuń
  2. Cześć,

    Oczywiście, ja się przez całkiem długą chwilę zastanawiałem, jak zrobić, żeby WSZYSTKIE aplikacje Wicketowe budowane Mavenem używały Spring 2.5.1 i nie mogąc nic mądrzejszego wymyślić, dokonałem edycji akurat tego pliku POM (z wiadomymi konsekwencjami !!!)...

    Mimo wszystko więc zaliczyłbym to moje rozwiązanie do "mavenowych" ;-), choć pewnie do tej brzydszej ich części...

    Pozdrawiam,
    Waldek Kot

    OdpowiedzUsuń
  3. Re: Łukasz,

    Gdzieś czytałem o Mavenie bez pom.xml, więc może to własnie maven-db?! Na razie ten temat odłożyłem na półkę. Wolałbym zobaczyć jak można moją aplikację uruchomić z poziomu Buildr.

    Re: Waldi,

    Tak, zgadzam się z tą kwalifikacją - "brzydsza" część. Podoba mi się ;-) Mimo wszystko to Ty byłeś sprawcą mojego sprostowania, więc bez względu na piękno rozwiązania Tobie należą się podziękowania. Dziękuję!

    Jacek

    OdpowiedzUsuń