Large project: one version for everyone or its own release cycle for each subproject?

Given that we have a set of Maven artifacts with some dependencies between them. Artifacts belong to different teams and can be several teams at once. This is our big project. For instance:

projectX --- projectA

        |     \
   projectB   projectC 

Question: what is better to save all subprojects in one large Maven project with one version or to allow each team to have their own artifact and their own release cycle and their own version?

The advantage of separating commands is simple: if some team does not cope with the assembly, others still use the old dependency provided by this command and do not experience any problems. Also in each global release, we see which modules have been changed, and it is easier to find the problem.

The disadvantage of command separation is:

  • Team
  • modifies the projectX. now all teams must re-release their modules.

  • The projectX version is hard-coded in 3 modules, this is a very error-prone solution. otherwise, the version can be described as LATEST or hardcoded in the parent module, but who will force the teams to recompile their modules if ProjectX is changed? ..

So what are the best practices for this typical situation?

+4
source share
1 answer

Unfortunately, there is no golden rule for this. I was working on a large project (~ 90 maven modules / submodules ... from maven1 to maven2!), And in those days we used one large version for everyone for each version, when developing with SNAPSHOT versions.

, , :

  • .
  • .

, maven artifact , ( !)

/ , , , - . Maven , .

, ? ( , , ?!)

? , , ?

, IMHO .

0

All Articles