Errata: Biblioteki zewnętrzne, EAR i Maven


Pierwsza errata na moim blogu :). Umiem przyznać się do błędu, lecz miejmy nadzieję, że to jedna z ostatnich tego typu sytuacji. Rzecz dotyczy dodawania bibliotek zewnętrznych do pakietu EAR zbudowanego przy użyciu Maven. Poniżej zamieszczam najbardziej elegancką według mnie konfigurację maven-ear-plugin:

<plugin>
  <artifactId>maven-ear-plugin</artifactId>
  <version>2.4.2</version>
  <configuration>
    <jboss>
      <version>5</version>
    </jboss>
    <defaultLibBundleDir>lib</defaultLibBundleDir>
    <modules>
      <ejbModule>
        <groupId>javaee-app.controller</groupId>
        <artifactId>controller</artifactId>
      </ejbModule>
      <webModule>
        <groupId>javaee-app.view</groupId>
        <artifactId>view</artifactId>
        <contextRoot>view</contextRoot>
      </webModule>
      <jarModule>
        <groupId>javaee-app.model</groupId>
        <artifactId>model</artifactId>
        <includeInApplicationXml>true</includeInApplicationXml>
        <bundleDir>/</bundleDir>
      </jarModule>
      <jarModule>
        <groupId>javaee-app.utils</groupId>
        <artifactId>utils</artifactId>
        <includeInApplicationXml>true</includeInApplicationXml>
        <bundleDir>/</bundleDir>
      </jarModule>
      <jarModule>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
      </jarModule>
    </modules>
  </configuration>
</plugin>

Szczególną uwagę należy zwrócić na tag defaultLibBundleDir, dzięki któremu wszystkie biblioteki dodatkowe zostaną umieszczane domyślnie w katalogu lib (tutaj Spring Framework). Wszystkie moduły deploy’owane jako jarModule także znalazłyby się we wspomnianym wcześniej katalogu gdyby nie nadpisanie konfiguracji znacznikiem bundleDir. W tym wypadku należy jednak wymusić dodanie odpowiedniego wpisu do pliku application.xml przez ustawienie atrybutu includeInApplicationXml na true.

Dzięki przedstawionej wyżej konfiguracji dodatkowe biblioteki zostaną umieszczone w katalogu lib archiwum EAR oraz nie będą wymagały dodatkowego wpisu w głównym deskryptorze aplikacji.

Pragnę także oznajmić, że idąc z duchem czasu zamierzam przesiąść się ze starego, dobrego Subversion na Mercurial’a. Źródła projektu można pobrać z repozytorium: https://bitbucket.org/lukasz_antoniak/javaee-app.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: