Daily Archives: November 27, 2013

My pom.xml Configuration File in a Spring Project

My pom.xml Configuration File in a Spring Project

POM is Project Object Model; it’s a XML configuration file of Maven 2 that uses the information included here to build our project. That’s why it’s very important to know something about it.

<?xml version=”1.0″ encoding=”UTF-8″?>

<project xmlns=”http://maven.apache.org/POM/4.0.0&#8243; xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance&#8221;
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd”&gt;

<modelVersion>4.0.0</modelVersion>

<groupId>com.linaittech</groupId>

<artifactId>wik</artifactId>

<name>Faka</name>

<version>1.0.0-BUILD-SNAPSHOT</version>

<properties>

<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>

</properties>

<dependencies>

<!– Spring –>

<dependency>

<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!– Exclude Commons Logging in favor of SLF4j –>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

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

<!– AspectJ –>

<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>

<!– Logging –>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>

<!– @Inject –>

<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>

<!– Servlet –>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

<!– Test –>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>

</dependencies>

<build>

<plugins>

<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>

</plugins>

</build>

<packaging>war</packaging>

</project>

It’s a typical XML syntax. In general, there are all properties, dependencies and plugins needed to build your project. In other words, your files and libraries. Thanks to that, Maven knows how and what to build. This is like a glue that join all the components in one web application.

The most important information about your project:

<modelVersion>4.0.0</modelVersion> – POM version

<groupId>com.linaittech</groupId> – the name of your package

<artifactId>wik</artifactId> – context in your project

<name>Faka</name> – the name of your project

<version>1.0.0-BUILD-SNAPSHOT</version> – used for projects under active development (your project probably isn’t) to know exactly what and when

Among properties, you can see:

– All information about the fundamental components that are included in your project: Java EE version, Spring Framework version, Aspect-oriented Java extension version, Simple Logging Facade for Java

Among dependencies, you can see:

– Core Spring libraries – taken from spring-context

– Aspect Oriented Programming – taken from aspectjrt

– Logging – we use slf4j-api, jcl-over-slf4j, slf4j-log4j12, log4j

– Injection – we use javax.inject

– Servlet management – all the APIs that are needed for servlets: servlet-api, jsp-api, jstl

– Testing – we use JUnit, version 4.7, during test only

Among plugins used for building your project, you can see:

– Maven 2 plugins for Eclipse IDE – maven-eclipse-plugin, maven-compiler-plugin, exec-maven-plugin

These tags are used for excluding:

<exclusions>
<!– something –>
<exclusion>

 

How to Download and Setup Spring Framework for Eclipse IDE

How to Download and Setup Spring Framework for Eclipse IDE

To download Spring Framework, go to the link:

http://repo.spring.io/release/org/springframework/spring/

Search the most recent version. At the time of writing this article, it’s

3.2.5.RELEASE/            06-Nov-2013 19:50    -

Click it, and you see some items. Choose the first one:

spring-framework-3.2.5.RELEASE-dist.zip             06-Nov-2013 19:51  48.05 MB

Click to download the libraries in zip archive. Unzip it. Note that I use Linux but there’s no difference for you.

You should get into the main directory of Spring Framework, and then into libs one. There are jar archives you need for Eclipse.

Ok. Open Eclipse.

Create a new Java project: File -> New -> Java Project (or click Other… if you don’t see this item) -> Choose your Project Name -> Next -> Finish

Now you see your project in Eclipse (in Package Explorer on the left).

Right click the project -> Build Path -> Configure Build Path

Click Libraries Tab -> Click Add External JARs -> Search your main Spring Framework directory, then libs one -> Highlight all libraries (jars) -> OK

You see the libraries you will add to your project -> OK

You have the Spring libraries added to your other libraries in your project.

It’s not all you need. You should download commons-logging from:

http://commons.apache.org/proper/commons-logging/download_logging.cgi

Unpack it to have the directory with libraries.

Right click the project -> Build Path -> Configure Build Path

Click Libraries Tab -> Click Add External JARs -> Search your main commons-logging directory -> Highlight all libraries (jars) -> OK

You see the libraries you will add to your project -> OK

Now you have all what you need to build Spring applications in  Eclipse.

Go with coding!

Warning:

There’s some error in Eclipse IDE when you try running your application. If you run your application with open xml configuration file (usually Beans.xml, but the name can be  different – it depends on you which name you chose), you will get a strange error in console. It’s a false error. To avoid it, just don’t start you application at Bean.xml file opened. It can be started on other file opened, for example the main class of your project. Try it out.