*
The moose likes Ant, Maven and Other Build Tools and the fly likes How to split a web project into different web modules with maven? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » Ant, Maven and Other Build Tools
Bookmark "How to split a web project into different web modules with maven?" Watch "How to split a web project into different web modules with maven?" New topic
Author

How to split a web project into different web modules with maven?

Juan Manuel
Greenhorn

Joined: Feb 24, 2010
Posts: 12
Hi everyone! I have some problems with a project I hope someone could help me to resolve them.
We are in the middle of a big refactor in a project where there are different approaches for the same logic. Each approach is supposed to include only the view layer of the application so they only contain Spring MVC controllers, tiles xml configuration and jsps. There is also a main web project with the login logic, filters and the other web stuff.
What we want to do is to create these approaches in a way they could be included or not in the final project (the main web project) as maven dependencies. The problem is we don't know how to define these modules so, when creating the final artifact, the webContent will be copied into the webContent of the web application. Also, there is another question. Should the java binaries for the controllers be copied with the other binaries of the web app or they should be inside a jar file as a dependency?Which should we use to create these modules, war or jar?
I've being reading about the assembly plugin but I don't know exactly how to use it to do this or if may be another option.

Thank you in advance!
Jayesh A Lalwani
Bartender

Joined: Jan 17, 2008
Posts: 2273
    
  28

You can use maven war pluginto merge a war module into another module. I think the plugin cannot merge resource files like web.xml together. It just copies the files from one war module into another war module. So, what you can do is have one war module that contains your main web project with login etc. You can have a war module for each approach. Then at build time you can include the approaches that you want to bundle together. Maven will copy all the jps, classes, dependent jars from your approach module into the main module and package it as a war

This might work for you, but personally I wouldn't do it this way. I would just bundle all the approaches with the main war, and then use configuration to drive which approach is available for the user. Having parts of the webapps in differrent modules might be asking for trouble. For one, you might run into "Jar hell". Let's say approach1 uses hibernate 3.X and approach2 uses hibernate 4.x. Your final main war will contain both hibernate versions, and then you might run into a problem that code that works in the approach module suddenly doesn't work when you bundle them into the main module. If I do this, I would make sure I put something in place where everyone uses the same version of 3rd party libraries
Juan Manuel
Greenhorn

Joined: Feb 24, 2010
Posts: 12
Thank you! That was what I was looking for.
Thanks for the tip. In our case, these modules will be bundle all together at first because in the first release it's necessary. This is intended to avoid the inclusion of elements that won't be use in next releases. Each approach will only include the view layer and they won't have shared dependencies.
Another question I have is about development. We are using STS as our IDE with VMWare vFabric as server. This works fine when we want to create the artifact but, is there any way to instruct STS to deploy the project the same way in our development server?

Thank you again!
Jayesh A Lalwani
Bartender

Joined: Jan 17, 2008
Posts: 2273
    
  28

The way most people do it is developers use the IDE to develop and deploy code to their local web server. When the developers are do e wi a particular change they check in the source into a change control repository, for example SVN. all the source code lives in the change control repo. Then, there is a CI server like Hudson that builds and runs the checked in source code on a nightly basis, and installs the code that it builds on the dev server.


The installation to the dev server is done via maven itself, or shell scripts, not through an IDE. IDE is a dev tool not an installation tool
Juan Manuel
Greenhorn

Joined: Feb 24, 2010
Posts: 12
I think I wasn't clear when I asked the question
What I meant was what I had to do to deploy to my development server embedded in my IDE, not to a final server. I asked it because in STS 2.9.2 it didn't work, it just deployed the files from the dependency war without extension to the deploy folder. I changed to STS 3.1 and know it works. I think there is a bug in that version, that's why I asked the question in the first place.
But thank you anyway!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How to split a web project into different web modules with maven?
 
Similar Threads
How to install Axis on WSAD 5.1.2
Maven - Building a single war file from multiple modules
Ear Building in Maven
add lib jars to war file using maven
Maven Tomcat Error