I would like to dynamically assign versions of dependencies of my Maven project (please do not ask why - I know it is not a preferable pattern). As far as I understand I have to create Maven Extension to achieve this as regular plug-in is invoked too late.
So, I have tried to catch Maven events in EventSpy, I have also tried AbstractMavenLifecycleParticipant. Using these I am able to be notified, but how to actually do the change itself - how to make Maven to start working with this new updated version? I guess I somehow need to change dependency version in maven's reactor....but how?
I know there's solution in maven-version-plugin but that will require have it as a 2-step job: first manipulate pom.xml and then run the actual build. But I need to have it done within one maven run.
Any idea, please? Thanks, in advance.
EDIT
Example pom.xml files to illustrate situation
Library module:
my-lib pom.xml
<groupId>foo.bar</groupId> <artifactId>my-lib</artifactId> <version>1.0.5</version>
my-app pom.xml
<groupId>foo.bar</groupId> <artifactId>my-app</artifactId> <version>2.5.0</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> ... <dependency> <groupId>foo.bar</groupId> <artifactId>my-lib</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependencies>
Now when I build my-app I need to dynamically assign my-lib version according to the latest released version I find in nexus (I know how to get correct version - let's say it is 1.0.5). But how to do some kind of pre-processing that will change the version in reactor so Maven will then use 1.0.5 version?