This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
My project / repository is becoming quite large. There are a number of modules I could extract into external libraries (this is all git + maven + J2SE) for reducing the code in the project and also because these libraries could be reused by other projects / people.
My issue is if I break my project up, building, deploying and managing dependencies becomes painful. I currently use jenkins + artifactory for build / deployment.
The main headache would be for a release of the project I would need to change versions / build / deploy all of the changed dependent libraries first before the actual project release / build. Some libraries will be fairly static / not change much, but there are going to definitely be a handful which will evolve in parallel. The development can be designed in such a way to be compatible, just the overhead of build / release is my main problem.
Anyone out there that have or solved similar issues with larger or shared java projects?
At the moment I'm pretty much looking into scripting or hand rolling something to analyse the dependencies and build / deploy everything, either in bash, but maybe gradle. But I kinda feel there must be better way as this must be a common issue with many larger projects / some reasonably ways of dealing with it.
actually its very common problem with commercial projects with multiple solutions, but I prefer the solution of parent project and pom (with maven).
So I would have one parent project that would just configure all the required projects i.e in Pom.xml and each project will have its own pom that defines the dependency on either 3rd party lib or internal projects.
and version of all the common libs/projects is defined in parent pom including the version of release. something like below.
In Hudson you define individual project with the project creating war or ear as downstream project so every time a support project example DatabaseLayer is build it will trigger building of WebProject.
All desirable things in life are either illegal, banned, expensive or married to someone else !!!