使用maven分类器插件与模块构建多个工件

时间:2014-07-03 10:17:20

标签: maven module classification

以下是上下文:一个应用程序,让我们将它命名为“clientdata”,将其捆绑到要在WebSphere上部署的内容中。我们需要为这个应用程序生成几个jar:

  • api-contract(接口)
  • EJB
  • EJB客户端
  • IMPL

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合作的工具无法帮助你”

以下是引文的来源:http://blog.sonatype.com/2010/01/how-to-create-two-jars-from-one-project-and-why-you-shouldnt/#.U7UhNCgucvQ

我非常感谢您在这个问题上的专业知识。

问候,GBE。

1 个答案:

答案 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