最近我开始使用Maven更有效地管理我的项目结构。但是,既然我在学习JAVA的同时,我已经走到了尽头, MAVEN中的模块和JAVA包之间有什么区别?
由于包用于对具有共同目的的类/接口进行分组: (来源:docs.oracle)
定义包是一组提供访问保护和名称空间管理的相关类型。
我无法找到一个明确的模块定义,比模糊的更好地陈述: (来源:http://docs.jboss.org/tools/latest/en/maven_reference/html/creating_a_maven_application.html)
Maven模块是一个子项目
根据我的阅读,我们应该创建模块,以便将项目,业务,域中的逻辑分开,基本上任何被视为独立实体的东西。
因此,为什么我们不能对包的使用做同样的事情呢?目的不一样吗?
我也在这里重新选择所有构建配置。如果它是唯一的区别,那么请提供论证何时应该使用哪一个。
答案 0 :(得分:1)
Maven是一个捆绑工具,它将软件的可重用部分组合到一个应用程序中,无论它是Java代码,图像资源还是HTML模板。它构建您的应用程序,以便它可以在特定环境(本地,测试,生产等)中运行或部署。所有这些都与Java包无关。
如果您(或其他人)想要重用您编写的代码,您应该关心Maven模块。例如,您编写了一个转换货币的Web应用程序,现在您想在另一个应用程序中使用转换逻辑(但不是Web前端)。在这种情况下,您可以为Web前端创建一个模块,为业务逻辑创建一个模块。
答案 1 :(得分:0)
包是类的集合。模块是具有构建配置的包的集合。
如果是您自己的项目,您可以使用包和/或模块组织它们。如果要为多个项目创建可重用的组件(例如库),则应使用模块。
如果您只有软件包,则项目必须直接为其所需的每个库包含所有软件包(即源文件)。而不是使用模块(记住它也有构建配置),您可以获取编译后的输出(例如.jar,.aar等)并将其包含在您的项目中。