maven多模块项目(pom包装)和ear包装有什么区别。据我所知,Ear 用于打包一组相关模块(EJB、JPA、JSF)。阅读 maven文档后,我发现多模块项目用于同一件事。
他们是一样的吗?我可以使用多模块项目而不是 EAR 吗?多模块项目可以部署到应用服务器吗?
多模块项目(pom 的打包)是一种定义具有子模块的父 pom 的方法。这很方便,原因有很多。一方面,您可以只构建父 pom,mvn compile
它也将构建它的所有模块。如果没有父 pom,您必须进入每个 pom 并手动输入mvn compile
。
不仅如此,使用模块还可以为您提供其他非常重要的功能。 请参阅此问题的答案。 总而言之,假设您有一个持续集成服务器,它刚刚安装在您本地构建的中间。通过使用模块,您可以确保针对本地代码而不是持续集成服务器的代码进行编译。这将防止很多 heisenbugs(sp?)。
现在ear的封装与第一个多模块概念没有直接关系。该包装仅确定二进制输出。它将输出一个ear文件。在 maven-ear-plugin 插件中,您可以包含其他模块,例如 wars/jars/ejbs,但它不会执行我在第一段中描述的任何事情。比如mvn compile
在ear的pom.xml文件所在目录下输入,不会编译它所依赖的war文件。
此外,您不必在耳朵中包含其他 maven模块。另一个完全不相关的项目可能会安装一个 ejb,您可以在您的耳朵中使用该 ejb 作为依赖项。
多模块只是将您的项目组织成模块/组件的一种方式。包装不必总是很重要。例如,它可以是一个战争项目,其所有服务器端内容作为其模块中的一个 jar 文件。
简而言之,多模块组织可以选择耳朵项目,但多模块总是耳朵项目的相反是不正确的。
两者不一样。多模块项目只是构建所有子模块,它不会产生工件。