如何在Intellij Idea中组织大型java项目

如何在Intellij Idea中组织大型java项目,java,grails,intellij-idea,Java,Grails,Intellij Idea,我知道这个问题有点笼统,但我似乎找不到一个好的总结,来说明在IDEA中分解一个大型项目的最佳方法背后的想法 我的项目由几个部分组成-- 在EC2上运行的grails服务 托管管理网站的grails服务器。 托管面向客户网站的grails服务器 安卓客户端应用程序 几个定制的中间件库,用于管理与Amazon上DynamoDB后端的交互 中间件库打算由这些组件中的几个组件(包括Android Ap)使用。其中一个是专门用作数据层的,通过该数据层,各种组件可以访问Amazon DynamoDB后端上的

我知道这个问题有点笼统,但我似乎找不到一个好的总结,来说明在IDEA中分解一个大型项目的最佳方法背后的想法

我的项目由几个部分组成--

在EC2上运行的grails服务 托管管理网站的grails服务器。 托管面向客户网站的grails服务器 安卓客户端应用程序

几个定制的中间件库,用于管理与Amazon上DynamoDB后端的交互

中间件库打算由这些组件中的几个组件(包括Android Ap)使用。其中一个是专门用作数据层的,通过该数据层,各种组件可以访问Amazon DynamoDB后端上的数据

在IDEA中,所有这些组件应以何种方式组织到项目中? 中间件应该作为一个sperate项目构建吗?如何将其导入到每个组件中?作为“全局库”,复制源文件还是什么

“管理员网站”是否应该作为一个单独的包构建在Grails服务或Android应用程序所在的同一个项目中

“项目结构”和各个部分背后的想法是什么(facet/modules/libraries/sdk等对我来说都有点不透明,但在我看来,尤其是在Android应用程序中,我需要小心不要加载太多我并不真正需要的代码,也不要复制太多的代码,这样中间件的维护会很痛苦


如果您对这些主题有任何一般性的指导,或提供有关该主题的参考资料,我们将不胜感激。

在Intellij IDEA中,每个组件都应作为一个单独的模块进行组织。一个模块可以使用其他模块作为依赖项

连接库有几个选项:

  • 将JAR作为全局库添加到项目属性的“项目结构”部分。然后将该库添加到使用它的每个模块中

  • 将JAR添加为新模块的导出依赖项,然后将该模块添加为其他模块的依赖项。此方法的优点是您可以将外部依赖项本地化到单个模块中,这可以帮助您更轻松地维护依赖项