How to convert Java web project to Maven based project

There is no exact or official solution to convert an existing Java web project to a Maven based web application project. Basically, the Maven based project conversion will involve two major changes, which is :

  1. Folder structure – Follow this Maven’s folder structure.
  2. Dependency library – Put all your dependency libraries in pom.xml file.

Steps to convert Java based –> Maven based

This guide will show you how to convert the following servlet web application to Maven based structure, and support Eclipse IDE.

Existing Java web project structure
A simple Java servlet web application , with one “javaee.jar” dependency library

Existing Java web project structure

mkyong

Founder of Mkyong.com, passionate Java and open-source technologies. If you enjoy my tutorials, consider making a donation to these charities.

22 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Ran Cohen
10 years ago

I’m with caroline – Where is the guide?

kaushik Lele
11 years ago

It seems article has been deleted. There are no steps given after screenshot of Java project.

Alpin
8 years ago

hi. im need this article.. i think some part of this guide is missing…

Jaimoto
13 years ago

Genio!

Thanks for the tutorial, really helpful !

Ernesto Maytin III
11 years ago

For me the undeniably Eclipse; like NetBeans i have been doing extremely well at the time of compiling; easy and without complications.

Ernesto Maytin III
11 years ago

Excellent; I have worked with some applications and it seemed to me a very useful tool when compiling my codes love JAVA.

Sukeerthy Anga
11 years ago

I want to create a dynamic web project in eclipse using spring framework+hibernate without using maven and annotations.I already did the project using servlets and jsp.
Can u help me in developing the project?

Sundeep
11 years ago

Hi Mkyong, firstly thank you for this and for the many other tutorials that you have provided, I just wanted to ask if you can update this tutorial to use the new features of eclipse that assist in converting an existing project into a Maven project.

caroline
11 years ago

Where is the guide? it seems that this article is uncomplete?! i don’t get it. I have a web project on my eclipse, and i moved all my sources to the src/main/java, but still get the web project view!!! how can i have the maven view???

Oscar Blass
12 years ago

Thank you so much. I muddled through this and have my project working in Maven and Eclipse. Thank you very much for sharing this information.

Eric Martin
12 years ago

Where do I copy my existing Tomcat .jsp, and .html files in Maven?
Thanks,
Eric

Yogi
13 years ago

If there is a tool to generate the dependency configuration unit?

dli7mar
13 years ago

When the war file is ready, how do I deploy it to tomcat? how do I create the application folder under tomcat/webapps?
Thanks.

aaaa
13 years ago
Reply to  dli7mar

just put war there

mostafa
13 years ago

please tell me what is the problem ?
the following is an exception when i run a war file in weblogic:

Error 500–Internal Server Error
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [ch.orange.pna.csr.web.MonitoringController] for bean with name ‘MonitoringController’ defined in ServletContext resource [/WEB-INF/CSR-servlet.xml]; nested exception is java.lang.ClassNotFoundException: Class bytes found but defineClass()failed for: ‘ch.orange.pna.csr.web.MonitoringController’
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1141)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:758)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:422)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:306)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:251)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:220)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:112)
at javax.servlet.GenericServlet.init(GenericServlet.java:258)
at weblogic.servlet.internal.ServletStubImpl$ServletInitAction.run(ServletStubImpl.java:1094)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java:970)
at weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.java:949)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:888)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:598)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:406)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
Caused by: java.lang.ClassNotFoundException: Class bytes found but defineClass()failed for: ‘ch.orange.pna.csr.web.MonitoringController’
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:187)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:224)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:41)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:211)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)
… 27 more
Caused by: java.lang.UnsupportedClassVersionError: ch/orange/pna/csr/web/MonitoringController (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:480)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:182)
… 35 more

Amol Ghotankar
13 years ago

Hi,

Thanks for the post and I have been your fan and following you all time.

I have a web project which is now grown a lot big and hence there is a need to convert it into maven and use the modules/trunk type architecture using which I can separate out the modules and keep then separately.

Any guide to create the same? May be part-2 of this series?

Problem is I have around 10 modules in the project and each module has set of dto’s, dao’s & services. Now I want to migrate to repository based maven structure which will hold these modules separately and jars will get added to my project.

I hope I am clear.

swetha naik
14 years ago

I have a already built maven project, now I want to add few more files to utilise their functionality. I tried to include those folders in the path required, but it shows error when I do a maven build. What are changes I need to do to add them, so that I can use them in the project.

Mark
14 years ago

Cheers for the example, very good and easy to understand. I only have one problem though

3. Configure the dependency libraries

is there no way Maven or Eclipse or anything can’t import from you lib folder or lookup the dependencies based on the jar names in this folder? It’s just I have 63 jars, Hibernate Spring Apache-Common JSF and a load more and not all (most in fact) I can’t find the maven dependency groupId/artifactId.

Fred Bricon
13 years ago
Reply to  Mark

There is such a tool now, check out JBoss Tools 4.0.0(-Beta) from http://marketplace.eclipse.org/node/420896#.UJjaIcXA_Mo. You’ll be able to identify, select, adjust the scope, convert of your dependencies : http://docs.jboss.org/tools/whatsnew/maven/maven-news-4.0.0.Beta1.html

A screencast showcasing this feature : http://bit.ly/QUCyRj

Bharat
13 years ago
Reply to  mkyong

Hello,

I am a beginner to Maven. Can you plz share a dynamic maven web project build using struts 1.2 flow?

Thanks,
Bharat

Siva
13 years ago
Reply to  mkyong

When i convert already existing web project and keep same project folder structure like the first image in this page and apply maven capability. Is there anyway I can achieve that….

Siva