views:

533

answers:

2

I have an eclipse Tomcat project that has several dependencies on other eclipse projects.

For example imagine the main project is called server and has several dependencies:

  • server

(depends on):

  • data-lib
  • server-utils
  • messaging-utils

Currently every time I change data-lib,server-utils,messaging-utils I have to recreate the .jar file and copy it into WEB-INF/lib directory of server. At that point I export the server as a .war and deploy to my server.

I want to make this process work from the cmd line using ant (note I know maven is out there but I know ant pretty well from past experience so would prefer sticking to it for now). Its easy enough to create the build file for server -- it will end up creating a .war file. But I want it to automatically build the dependent libs. I want to do this while preserving my development workspace in Eclipse.

What is the easiest and cleanest way to do this? Currently my thought is each individual project will have its own build.xml (i.e. data-lib/build.xml , server-utils/build.xml , etc). I will have the server/build.xml do an antcall to these individual build files and then copy the jars to the server/WEB-INF/lib directory.

Is there an easier/better way?

A: 

I am not sure if it can help you, but in your WAR project, right-click on it in Package Explorer, and click on Properties. There is a "J2EE Module Dependencies". In this option, select all of the dependencies (i.e. "data-lib", "server-utils" and "messaging-utils").

Now, when you modify a Java class in one of the dependencies, Eclipse will recreate the JAR file and deploy it directly in the WEB-INF/lib of your web application.

romaintaz
this sounds like it would be useful. But I don't see the J2EE Module Dependencies. Do I need some kind of special plugin to see this option?
Ish
I think it is a default properties, at least for Eclipse WTP...
romaintaz
+1  A: 

if you want an Ant based script, I would go with Apache Ivy. The basic idea is that each of your submodule has its own build.xml file and publishes (via Ivy) their "publications" (like a Jar file) to a repository on the file system. The other modules then import these "publications" to build the final product.

Vladimir