Friday, January 18, 2013

What is Maven repository ?

Maven Repository :

A repository is a place where all the project jars, library jar, plugins or any other project specific artifacts are stored and can be used by Maven easily.

There are three types of repository :
  •  local
  • central
  • remote 

Local Repository :

The maven local repository is a local folder that is used to store all your project’s dependencies (plugin jars and other files which are downloaded by Maven). In simple, when you build a Maven project, all dependency files will be stored in your Maven local repository.

The default name of the Maven's local repository is .m2.

Central Repository

Maven central repository is repository provided by Maven community. It contains a large number of commonly used libraries.

When you build a Maven’s project, Maven will check your pom.xml file, to identify which dependency to download. First, Maven will get the dependency from your local repository, if not found, then get it from the default Maven central repository

This repository is managed by Maven community, required to be configured and it requires internet access to be searched.

Remote Repository

Sometime, Maven does not find a mentioned dependency in central repository as well then it stopped build process and output error message to console. To prevent such situation, Maven provides concept of Remote Repository which is developer's own custom repository containing required libraries or other project jars.

For example, using below mentioned POM.xml,Maven will download dependency (not available in central repository) from Remote Repositories mentioned in the same pom.xml.
<id>JBoss repository</id>

Maven Dependency Search Sequence :

When we execute Maven build commands, Maven starts looking for dependency libraries in the following sequence:

Step 1 - Search dependency in local repository, if not found, move to step 2 else exit.
Step 2 - Search dependency in central repository, if not found, move to step 3 else exit.
Step 3 - Search dependency in remote repository or repositories, if not found then it is prompt error message else exit.

Wednesday, January 9, 2013

how to install MAVEN on linux

What is MAVEN ?

Read here :

Here are the steps to download and install Maven on linux :

Step 1 : Download the latest binary from the
Step 2 : Untar it using tar command.
              tar -zxvf /usr/local/apache-maven-3.0.4-bin.tar.gz
Step 3: Add Maven binary Path to the System Path i,e add in .bash_profile path
          $ cd $HOME
          $ vi ~/.bash_profile
Set PATH and M2_HOME as follows
save the file by pressing esc : wq button

Note: Don't delete the previous PATH, Just append the M2_HOME path after :

Now save and close the file then logout and login back to see the effects, To confirm where the installation has done properly or not, check :
mvn --version
you will see following ouput :
Apache Maven 3.0.4 (r1232337; 2012-01-17 00:44:56-0800)
Maven home: /usr/local/apache-maven-3.0.4
Java version: 1.7.0_10, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_10/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.18-92.el5", arch: "amd64", family: "unix"

Congratulation... you are done here  :)

Wednesday, January 2, 2013

How ExceptionHandler return JSON in spring MVC

I am working on one project where client/server response is in JSON format. It is easy to send object in JSON format but what if some exception occured and you want to send the Exception also in JSON format ?
After n number of trial. I finally able to do the above task

Step 1 : Add following annotation "AnnotationMethodHandlerExceptionResolver" in your <CONTROLLER>-servlet.xml file.

<!-- JSON format support for Exception -->
    <bean id="methodHandlerExceptionResolver"
        <property name="messageConverters">
                <ref bean="jacksonMessageConverter" />

    <bean id="jacksonMessageConverter"

Step 2: Make sure you have added jackson jars into your classpath.

Step 3: In controller class :

    @RequestMapping(value="/test", method = RequestMethod.GET)
    public String toTest() throws MxlServiceException {

   try {
      int i = 10/0; // it will throw exception which will be caught by handleException(...)
  }catch (Exception e) {
    throw e;
             return "hello";

then catch them both by writing an exception handler that looks like this:

@ExceptionHandler({ Exception.class })
    public ErrorResponse handleException(Exception ex,
            HttpServletRequest request, HttpServletResponse response) {
        ErrorResponse errorResponse = new ErrorResponse();
        return errorResponse;


{"message": "your_message"}

Feel free to comment :)