Hi all,

I have a WAR which exposes an extension point: MyStrategyInterface.  I then
have a number of clients who all provide their own implementation of said
extension.  The code is structured so there is a web-project and then
multiple client-projects which only contain the extension point.  The build
(using gradle) in each client project builds the WAR, unpacks it, inserts
the client JAR into WEB-INF/lib and then repacks the WAR.  Yes, I know.
 Really :)

Logically at runtime, there is a circular dependency - the WAR *requires* a
client and the client has a static dependency on the strategy in the WAR,
but we can get away with it because one direction is at compile time and the
other is at run-time.

How would I do this with maven?

My thoughts:

 - include the clients in separate source trees in the web project and use
profiles or an environment variable to select which one to include (i.e. mvn
-Dclient=clientX would include the source code for clientX).  The client's
have their own tests as well, so I would need to do this for the testing
lifecycle as well.
 - use the existing structure and do some custom magic at certain points in
the assembly lifecycle in the client - building the client war is done by
the client project
 - separate out the strategy into its own project and then do some magic to
change the dependency in the WAR to one of the client projects - build the
client war is done by the web project

This cannot be a unique requirement - and I have read the manual, but it
just isn't clicking...  I am not sure what terminology to search for in
google either....  I understand (and am using elsewhere) pom hierarchies,
but this needs more than that I think.

Help please :)

(I am using maven3)

Col

Reply via email to