【问题标题】:Maven dependency type ejb vs jarMaven依赖类型ejb vs jar
【发布时间】:2016-02-16 08:20:42
【问题描述】:

有什么区别

    <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <type>ejb</type>
    </dependency>

    <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <type>jar</type>
    </dependency>

【问题讨论】:

  • ejb 类型由maven-ejb-plugin 生成,其目的是这是一个与 EE 应用程序相关使用的 EJB。
  • @khmarbaise:如果我使用 jar 怎么办?这对于 EE 应用程序难道不可行吗?

标签: maven types pom.xml


【解决方案1】:

Maven 将触发不同的生命周期,具体取决于打包。 有关捆绑的生命周期列表,请参阅 here

在您的特定情况下,不同之处在于,使用jar作为包装时,不会在package阶段调用jar:jar目标,而是会触发ejb:ejb目标,能够处理特定任务与 EJB 模块相关(客户端生成...)。

【讨论】:

  • 我什么时候必须使用其中一个?
  • 这真的取决于你的模块的目的。您可以将maven-ejb-plugin 视为专门的maven-jar-plugin;如果您确实需要 maven-ejb-plugin 提供的特殊处理之一(查看插件站点 - maven.apache.org/plugins/maven-ejb-plugin - 了解更多信息),您最好使用 ejb 包装。如果不是(例如使用 EJB 规范 3+ 时),您可能只使用 maven-jar-plugin,因此请保留默认包装。
  • maven-ejb-plugin 如果您需要 Maven 模块的某些特定“EJB”功能,例如生成 EJB 客户端、指定要使用的 EJB 版本...(请参阅 @987654323 @)
  • AFAIK,这不能回答问题(依赖项的 ejb 类型)。这个答案更多的是关于ejb包装
  • @Tome 这个问题讲的是依赖类型而不是项目类型
【解决方案2】:

由于 ejb 是 the main artifact generated by the maven-ejb-plugin 并且由于它是 JAR 工件,因此在指定依赖项 AFAIK 时,您是使用 ejb 类型还是使用(默认)jar 类型并不重要。 (类似于 OSGi 包,有时也使用包打包创建,但只是 JAR 文件)。

如果您想将依赖项添加到辅助工件(例如 ejb-client、test-jar)或者如果依赖项具有不同的文件扩展名,那么您必须使用 specify the typeclassifier

文档似乎更喜欢to use the ejb type,但它也会产生一些噪音,并且有时在各处指定 ejb 类型时的可维护性稍差。这是一种非常严格的方法。

【讨论】:

    【解决方案3】:

    &lt;type&gt;ejb&lt;/type&gt; 当您的工件 artifactId 具有 EJB 并且您想要使用它们时需要。如果您不需要模块中的 EJB,&lt;type&gt;jar&lt;/type&gt; 是一个选项。

    【讨论】:

      【解决方案4】:

      如果您没有在依赖项中指定任何类型,它将选择默认类型为“jar”,这意味着在任何远程/本地存储库中查找具有 jar 扩展名的文件。当您指定任何其他类型(如“ejb”、“so”、“aar”)时,maven 将查找具有此扩展名的文件。

      【讨论】:

      • 目前我输入了 ejb,但在我的耳朵中找不到文件扩展名为“.ejb”的工件。只有一个“artifactId.jar”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多