Good questions.
I have never heard anything negative about SNAPSHOTs from those who use
them.
Notice - Free advice:
- Separate your utilities from your applications. If they have a life of
their own, you can manage the dependencies more easily.
- Test your utilities and libraries separately. Use SNAPSHOTs and a
release process that is separate from your application.
- Have your applications treat your utilities and libraries as if they
were written by some other organization.
- Use dependency management in the parent POM to control versions of
utilities. This gives you one place to maintain the versions.
End of free advice.
Free commentary.
At the beginning, you are correct, it will be harder to provide a stable
environment but that is where SNAPSHOTs are a big help.
Version 2.1.0-SHAPSHOT of the application depends on version
1.0-SNAPSHOT of file-manager-core until file-manager-core stabilizes and
becomes version 1.0. Generally speaking, the application should still
be a SNAPSHOT after your utilities become releases since you should be
able to stabilize the functionality and finish the testing of the
utilities before the same can happen to the application modules.
End of fee commentary
I think that you will find this advice at least worth the cost and you
may get some comments from the smarter and more knowledgeable people
here that refines or contradicts my advice.
There is lots of good Maven information freely available and lots of
projects that are very complex being developed with Maven.
Our biggest project had over 70 Maven modules of which 10 where
supporting libraries either written by us or aggregated from existing
open source projects.
We have some articles describing how we use Maven in our technical blog
at http://blog.artifact-software.com/tech.
Jokes are found at http://blog.artifact-software.com/fun if you need a
smile to face the world of Maven.
Ron
On 12/06/2014 10:46 AM, Hohl, Gerrit wrote:
Hello everyone, :)
I have a question which is not about a specific problem with Maven, but
more a general question.
I hope it is okay to ask this question here.
We use Maven and Jenkins for about 1.5 years now, I guess. Until now the
Maven projects have been very simple and - let's say - very monolithic.
But recently we identify more and more internal libraries in our
products. Of course we don't want to share this libraries by
copy-n-paste between the products - especially as we have Maven.
So we started to read books, tutorials on the Internet and so on. But
most of them only deal with simple projects. They don't cover e.g.
versioning the build process (especially if your build process consists
of more than just one step). They also don't cover the problems of
developing the libraries while your developing the products which depend
on them. Especially at the beginning your libraries will go through a
lot of changes. A few name snapshots as a solution, but don't explain
how you can work using them, how you can use them in your pom.xml and
how you deal with them if you finally switch your product and/or your
library from the snapshot state to the release state. A few also say
that you shouldn't use snapshots at all because it will result in many
problems (e.g. having -SNAPSHOT entries in your pom.xml). Nightly builds
or build triggered by the SCM are also an issue here.
Does someone know a good book or tutorial which handles all of these
issues around Maven and CI/CD in more depth?
Regards,
Gerrit
--
Ron Wheeler
President
Artifact Software Inc
email: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]