Spring kirjastot Maven riippuvuudet

Spring sivuja oli taas muutettu, ja nyt on saatu suorastaan mahdottomaksi päästä enää .jar paketteihin fyysisesti suoraan käsiksi joten alkaa olla aika jolloin Maven on ainoa vaihtoehto saada Spring kirjastot käsiinsä. Se taas edellyttää että on opiskellut Mavenin toiminnan ja tulee sen kanssa toimeen. Ja repositoryt ovat hallussa.

Joka tapauksessa, tässä lista Spring riippuvuuksista sen mukaan mitä mihinkin tarvitaan, ja näppärä niksi jolla voi kerralla hoitaa versiot. Idea ei ole mitenkään oma mutta pistän sen muistiksi tähän. Perusliikkeellelähtöprojektiin riittää seuraava (pom.xml:ään):

<!-- Shared version number properties -->
<properties>
  <spring.version>3.2.4.RELEASE</spring.version>
</properties>
<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
  </dependency>
</dependencies>

Tuo auttaa alkuun mutta ei riitä loputtomiin, vaan lisää riippuvuuksia tarvitaan, tilanteen mukaan.  AOP vaatii seuraavat kirjastot edellisten lisäksi:

<!-- Spring AOP dependencies -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aop</artifactId>
  <version>${spring.version}</version>
</dependency> 

<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjrt</artifactId>
  <version>1.6.11</version>
</dependency>

<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.6.11</version>
</dependency>

Tietokanta vaatii ajurin lisäksi:

<dependency>
  <groupId>commons-dbcp</groupId>
  <artifactId>commons-dbcp</artifactId>
  <version>1.4</version>
</dependency>

JPA Hibernatella vaatisi ainakin seuraavaa:

<!-- ORM Dependencies -->

<dependency>
  <groupId>org.springframework</groupId>
   <artifactId>spring-orm</artifactId>
   <version>${spring.version}</version>
</dependency>

<dependency>
  <groupId>org.hibernate.javax.persistence</groupId>
  <artifactId>hibernate-jpa-2.0-api</artifactId>
  <version>1.0.1.Final</version>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>4.2.6.Final</version>
</dependency>

Mutta kaikki riippuu tilanteesta. Ei kannata lisätä riippuvuuksia ellei niitä tarvita, eli jos koodi kääntyy ja ajaa. Monessa Spring kirjastossa on jo mukana riippuvuudet ulos, esim. Spring core sisältää commons-logging kirjaston, spring context sisältää mm. spring-aop, spring-beans, spring core, ja spring-expression kirjastot. Näiden mukana taas tulee mm. aopalliance.

Joskus on tarpeen määrittää itse näitä kirjastoja ihan versionumerokonfliktien vuoksi, päätasolle. Ja jos kirjastot ovat samantasoiset, Mavenhan viime kädessä valitsee version esittelyjärjestyksen mukaan. Johon ei pitäisi koskaan joutua menemään.

Jos ajaa web-asioita Tomcatissa, JSTL kirjastot saa esim. näin. Tässä esimerkissä näkyy myös miten voi estää alipakettien (johdettujen riippuvuuksien) tuonnin, jos esim. serverillä on jo servlet ja jsp-kirjastot:

<dependency>
  <groupId>org.glassfish.web</groupId>
  <artifactId>jstl-impl</artifactId>
  <version>1.2</version>
  <exclusions>
    <exclusion>
      <artifactId>servlet-api</artifactId>
       <groupId>javax.servlet</groupId>
    </exclusion>
    <exclusion>
      <artifactId>jsp-api</artifactId>
      <groupId>javax.servlet.jsp</groupId>
    </exclusion>
  </exclusions>
</dependency>

Huom! Muista että Maven käsittelee resurssi ja lokalisointitiedostoja eri tavoin kuin normaali Eclipse projekti- niille on oma paikkansa, ja se on src/main/resources  – jos laitat .properties tai .xml tiedostoja java-lähdekoodin sekaan ne eivät ajon aikana toimi oikein. Heti kättelyssä hyvä pistää log4j.properties paikalleen.

Linkki Spring oppaan liikkeellelähtö-ohjeisiin:

http://projects.spring.io/spring-framework/

Linkki jossa selitetään kaikkien kirjastojen käyttötarkoitus:

http://spring.io/blog/2009/12/02/obtaining-spring-3-artifacts-with-maven/

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s