PowerNukkitX / PowerNukkitX-Legacy

GNU General Public License v3.0
6 stars 4 forks source link

基于maven多目录的”模块化“方案 #36

Open johnbanq opened 1 year ago

johnbanq commented 1 year ago

基于maven多目录的”模块化“方案

如何在完美保留兼容性的前提下对这个庞大而内部交叉引用非常多的代码库进行拆分,是一个很棘手的问题。

我认为我们可以利用maven的多源文件目录功能来做到这一点。通过使用多个源文件目录,我们可以把负责不同功能的包放到不同的源文件夹里去,实现一定程度的划分。

这么干的优点是非常省事:由于这只是把代码放到了不同的目录,无需对源代码做任何处理,只需要复制粘贴即可。我们甚至可以把一个包拆到两个文件夹里去——因为在最终编译的时候这些文件夹是会被合到一起看待的。

绝大多数IDE(至少IDEA)是支持这个特性的,所以也不会有影响。

但是,这么搞实际上和没有模块化差不多——这个方案只会让PNX本身的代码库看起来好看点,实际上而言没有任何约束作用。

作为样例,我随手进行了一些简单的划分,放在这里,注意在src/main中的多个文件夹。

SuperIceCN commented 1 year ago

虽然很少合并上游更改了,但是我想不能忘了有些时候需要同步上游一些资源文件和协议更改。 手动复制粘贴当然是可行的。