Maven has been around for a pretty long time and the maven infrastructure is really solid and good. I am playing around with several maven projects and my own maven project which imports several other maven projects. The problem I am facing is that if I wanted to make a release compile of my project it’s becoming hard if some of the other downstream projects only have SNAPSHOT versions. Trying to fork those projects as well and making release compiles of those in my own repositories seems to cause a big domino effect. I am wondering if there is a way to make artificial “release snapshots” which can be treated as local releases within a specific repository even though they are really SNAPSHOT releases fixed to a specific point in time.
Not sure yet if this is at all possible, but this would be a good thing to allow.
UPDATE: There is a maven versions plugin which can be used to resolve this problem. Snapshots are timestamped and it’s possible to use versions:lock-snapshots to lock all external snapshot versions to specific versions of today. This allows you to promote a particular compile to a release or a locked snapshot. The information is contained in the Maven plugins page.
The interesting part is that there will need to be a commit with the changed versions of all the pom files. This was kind of what I wanted to avoid; it’s usually not a good idea to modify the source repo when a compile is released, but this is kind of the basis for how maven works. Maybe in the future someone will come up with another way to do this.