这里,同样是 commons 包下面的子包,不一定全部放在 commons 项目下,还需要按组件功能来分(可以再划分子包或不划分)。划分的主要标准是将来能按组件将几个相关的项目打包成 jar,比如组件 A 依赖组件 B,组件 B 依赖组件 C,不会缺少东西 B 导致编译A运行错误,又不会多出东D西导致以后这个组件D版本升级时,你的以前的其它模块A/B/C 用到它时还包括了一个过旧的版本,过时的版本D散布在各个下游模块A/B/C中将很难同步版本,你重新编译这个下游A模块的话,可能有其它相关的类(特别是未直接引用的第三者类,假设在 C中)又因版本问题无法编译(这种情况经常碰到,因为你没打算把 C 也升级到新版本)。