Java 项目结构:源代码与二进制文件中的模块依赖关系
Java project structure: module dependencies in sources vs binaries
我见过这样的项目,其中一个项目被分成多个模块,每个模块都是 maven 项目本身。这些模块通过一个模块集成,该模块包含对所有其他模块的引用。要启动项目,用户必须导入 IDE 中的所有模块。那么,为什么人们使用这种方法呢?将所有模块打包到 jar 中并作为某些模块的依赖项包含在内不是更容易吗?使用项目而不是罐子有什么好处吗?使用项目的缺点是:用户需要将所有模块保留在 IDE 中,可能会不小心更改源代码,并且如果 IDE 开始编译所有模块会花费很多时间。
如果您不小心更改了一个文件,只会重新编译这个文件,这没什么大不了的。
通常,您需要将项目模块化以减少相互依赖性并使一切更加可控。通常,父项目甚至没有自己的源文件;相反,它仅用于聚合模块。模块在这里只是用来将一个大项目分成几个部分。
您可以将这些部分开发为单独的项目,但要在一个模块中实施更改并使其可用于使用它的其他模块,您必须构建该模块并在客户端模块中实现依赖关系。那很麻烦。将它们作为一个大项目保留更实用,您只需更改您需要更改的代码,并且它对所有依赖它的模块都可用。
我见过这样的项目,其中一个项目被分成多个模块,每个模块都是 maven 项目本身。这些模块通过一个模块集成,该模块包含对所有其他模块的引用。要启动项目,用户必须导入 IDE 中的所有模块。那么,为什么人们使用这种方法呢?将所有模块打包到 jar 中并作为某些模块的依赖项包含在内不是更容易吗?使用项目而不是罐子有什么好处吗?使用项目的缺点是:用户需要将所有模块保留在 IDE 中,可能会不小心更改源代码,并且如果 IDE 开始编译所有模块会花费很多时间。
如果您不小心更改了一个文件,只会重新编译这个文件,这没什么大不了的。
通常,您需要将项目模块化以减少相互依赖性并使一切更加可控。通常,父项目甚至没有自己的源文件;相反,它仅用于聚合模块。模块在这里只是用来将一个大项目分成几个部分。
您可以将这些部分开发为单独的项目,但要在一个模块中实施更改并使其可用于使用它的其他模块,您必须构建该模块并在客户端模块中实现依赖关系。那很麻烦。将它们作为一个大项目保留更实用,您只需更改您需要更改的代码,并且它对所有依赖它的模块都可用。