java - Maven:差异模块-java包

标签 java maven

最近我开始使用 Maven 来更有效地管理我的项目结构。然而,由于我同时在学习JAVA,我已经走进了一个死胡同,MAVEN中的模块和JAVA包有什么区别

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

Definition A package is a grouping of related types providing access protection and name space management.

我找不到模块的明确定义,比模糊的定义更好: (来源:http://docs.jboss.org/tools/latest/en/maven_reference/html/creating_a_maven_application.html)

A Maven module is a sub-project

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

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

我还忽略了这里的所有构建配置。如果这是唯一的区别,那么请提供论证何时应该使用哪一个。

最佳答案

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

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

关于java - Maven:差异模块-java包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42561194/

相关文章:

java - Facebook Graph API 错误 - 应用按钮自动检测已禁用

java - 数组越界并将 list<Object> 转换为 string[]

eclipse - 如何在测试阶段设置java系统属性

java - JPADatabase 的 jooq codegen 无法正常工作

maven - Maven 设置和 POM 中的配置文件名称相同

java - 如何从 AsyncTask 返回一个值,该值在 doInBackground 中进行另一个异步调用

java - 从其他类访问 protected 字段

java - 构建应用程序时出错 - 连接到 http ://ws. zone.apache.org 被拒绝

使用 Eclipse 和 Maven 进行 Java 编码

java - Eclipse: "println(__LINE__);"——是否存在这样的预处理器宏来以编程方式获取代码的行号?