【问题标题】:Do I need to include Java EE maven dependencies in POM.xml if I develop my application against Glassfish?如果我针对 Glassfish 开发应用程序,是否需要在 POM.xml 中包含 Java EE maven 依赖项?
【发布时间】:2015-10-28 07:04:30
【问题描述】:

我正在开发一个 Java EE 应用程序,我打算在 Java EE 应用程序服务器上运行它(我选择了 Glassfish)。

我知道 Glassfish 是 Java EE 平台的参考实现 (RI),它实现/包含 Java EE 规范的各个参考实现。如果我错了,请纠正我,但这让我明白 Glassfish 的二进制文件将包含所有相关的 RI 罐子。

我使用 Maven 作为我的构建/项目管理系统,我将在 WAR 文件中构建/打包我的应用程序(因为我的应用程序是 Java EE Web 应用程序)。然后我会将这个 WAR 部署到我的应用服务器 Glassfish 上,然后它就会运行。

我的问题是,我是否需要在我的 Maven pom.xml 文件中指定 Java EE 依赖项?

我使用 Eclipse 作为我的 IDE,目前我需要包含这些依赖项,否则 Eclipse 将无法识别 Java EE 源 - 它会抱怨编译时错误。

但是,如果我确实包含在我的 pom.xml 中,那么这是否意味着我在我的应用程序(在 WAR 文件中)中复制了外部依赖项(Java EE RI jars),而像 Glassfish 这样的应用程序服务器已经提供了它?因为 Maven 会下载这些 jars 并放入您的代码库 - 对吧?

for.eg(仅以JMS为例):

<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>

我需要上面吗?我知道如果我针对 Tomcat 进行开发我肯定会这样做,因为它是一个 Servlet 容器并且没有其他完整的 Java EE 规范。

  • 这是我有点困惑的部分,我希望有人能对此有所了解。

【问题讨论】:

    标签: java eclipse maven jakarta-ee glassfish


    【解决方案1】:

    是的。你需要用作用域provided标记它们,告诉Maven它应该在编译时使用它们,但在运行时实现是由应用服务器提供的,所以它们不应该被打包到WAR中。

    【讨论】:

    • 这些是 Java EE API jar,而不是参考实现 jar。
    • 请问Java EE API jars和RI jars有什么区别?我什么时候会使用/需要这些类型的罐子?
    • @SoftwareDeveloper API 可用于编译,但没有实际实现。在运行时有一个实际的实现(无论是 RI 还是其他一些实现),所以代码可以实际运行。
    • 我明白了。我现在知道了。因此,对于编译,我们提供具有“已提供”范围的依赖项,并且不将其打包到 WAR 中。一旦部署到服务器上,它将使用我正在使用的应用程序服务器提供的 RI jar。
    • @SoftwareDeveloper 是的,这意味着您可以在不关心实际使用哪个实现的情况下进行开发(至少在理论上)。
    【解决方案2】:

    GlassFish 已经有 Java EE jar,但您需要它来进行编译,因此您必须为这些 jar 添加依赖项,但将范围提供为“已提供”,这样这些 jar 就不会捆绑在您的 war 或 ear 文件中.请看下面的例子

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 2012-04-04
      • 2012-05-12
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 2014-02-19
      • 2023-04-07
      相关资源
      最近更新 更多