Maven:差异模块 - java包

时间:2017-03-02 16:47:21

标签: java maven

最近我开始使用Maven更有效地管理我的项目结构。但是,既然我在学习JAVA的同时,我已经走到了尽头, MAVEN中的模块和JAVA包之间有什么区别

由于包用于对具有共同目的的类/接口进行分组: (来源:docs.oracle)

  

定义包是一组提供访问保护和名称空间管理的相关类型。

我无法找到一个明确的模块定义,比模糊的更好地陈述: (来源:http://docs.jboss.org/tools/latest/en/maven_reference/html/creating_a_maven_application.html

  

Maven模块是一个子项目

根据我的阅读,我们应该创建模块,以便将项目,业务,域中的逻辑分开,基本上任何被视为独立实体的东西。

因此,为什么我们不能对包的使用做同样的事情呢?目的不一样吗?

我也在这里重新选择所有构建配置。如果它是唯一的区别,那么请提供论证何时应该使用哪一个。

2 个答案:

答案 0 :(得分:1)

Maven是一个捆绑工具,它将软件的可重用部分组合到一个应用程序中,无论它是Java代码,图像资源还是HTML模板。它构建您的应用程序,以便它可以在特定环境(本地,测试,生产等)中运行或部署。所有这些都与Java包无关。

如果您(或其他人)想要重用您编写的代码,您应该关心Maven模块。例如,您编写了一个转换货币的Web应用程序,现在您想在另一个应用程序中使用转换逻辑(但不是Web前端)。在这种情况下,您可以为Web前端创建一个模块,为业务逻辑创建一个模块。

答案 1 :(得分:0)

包是类的集合。模块是具有构建配置的包的集合。

如果是您自己的项目,您可以使用包和/或模块组织它们。如果要为多个项目创建可重用的组件(例如库),则应使用模块。

如果您只有软件包,则项目必须直接为其所需的每个库包含所有软件包(即源文件)。而不是使用模块(记住它也有构建配置),您可以获取编译后的输出(例如.jar,.aar等)并将其包含在您的项目中。