以下是上下文:一个应用程序,让我们将它命名为“clientdata”,将其捆绑到要在WebSphere上部署的内容中。我们需要为这个应用程序生成几个jar:
ear包含ejb,impl和api-contract jar +应用程序依赖项
让我们调用“checkclient”另一个需要通过RMI调用“clientdata”的应用程序。 它需要使用api-contract和ejb-client jar。
目前,该应用程序分为3个子模块(API,IMPL和EJB)。
API模块生成api-contract jar
IMPL模块生成impl jar并使用api-contract jar
EJB模块生成ejb和ejb-client并使用impl和api-contract jar
所以这是我的问题:团队的一名成员认为我们应该使用maven分类器插件来生成所有这些jar,这样我们只需要维护一个pom(一个maven项目)。
我对maven分类器插件不太熟悉所以我想知道,这是个好主意吗? 我的一些阅读材料让我觉得它不是,主要是因为它违反了“核心惯例”和“设计与Maven合作的工具无法帮助你”
我非常感谢您在这个问题上的专业知识。
问候,GBE。
答案 0 :(得分:2)
首先,你的团队成员完全错了,因为这是在Maven中处理这种默认场景的错误方法。我假设(希望)你已经创建了一个合适的文件夹结构
+-- root (pom.xml)
+-- mod-api (pom.xml)
+-- mod-ejb (pom.xml)
+-- mod-impl (pom.xml)
+-- mod-ear (pom.xml)
基于上面的文件夹结构,您可以简单地定义模块之间的依赖关系,让maven完成剩下的工作。除此之外,您可以创建ejb-client automatically by maven-ejb-plugin并将其用于其他增强功能。
现在你可以从中创建一个ear(mod-ear只是添加依赖项)并将其部署到WebSphere。它应该走的路。根据定义,创建单个pom以创建该数量的工件是针对Maven的设计,因为Maven中的约定是为工件设置单个pom。所以你将开始与Maven战斗,你将放松战斗。 更好地了解Maven的想法,让您的生活更轻松。除此之外,它是一个关注点的分离,这意味着项目的单个部分的单个pom,这清楚地表明您可以在项目中找到任何内容。这是simple example of a Java EE application。