如果我针对 Glassfish 开发应用程序,是否需要在 POM.xml 中包含 Java EE maven 依赖项?
Do I need to include Java EE maven dependencies in POM.xml if I develop my application against Glassfish?
我正在开发一个 Java EE 应用程序,我打算 运行 它在 Java EE 应用程序服务器上(我选择了 Glassfish)。
我知道 Glassfish 是 Java EE 平台的参考实现 (RI),它 implements/contains Java EE 规范的独立参考实现。如果我错了请纠正我,但这让我明白 Glassfish 的二进制文件将包含所有相关的 RIs 罐子。
我正在使用 Maven 作为我的 build/project 管理系统,我将 build/package 我的应用程序放在 WAR 文件中(因为我的应用程序是 Java EE web应用)。然后,我会将此 WAR 部署到我的应用程序服务器 - Glassfish,然后 运行s.
我的问题是,我是否需要在我的 Maven pom.xml 文件中指定 Java EE 依赖项?
我正在使用 Eclipse 作为我的 IDE,目前我需要包含这些依赖项,否则 Eclipse 将无法识别 Java EE 源 - 它会抱怨编译时错误。
但是如果我确实包含在我的 pom.xml 中,那并不意味着我在我的应用程序中(在 WAR文件),而像 Glassfish 这样的应用服务器已经提供了它?因为 Maven 下载这些 jar 并放入您的代码库中 - 对吗?
for.eg(仅以JMS为例):
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
我需要以上吗?我知道如果我针对 Tomcat 进行开发,我肯定会这样做,因为它是一个 Servlet 容器并且没有其他完整的 Java EE 规范。
- 这是我有点困惑的部分,我希望有人能对此有所启发。
是的。你需要用范围标记它们 provided
告诉 Maven 它应该在编译时使用它们,但是在运行时实现由应用程序服务器提供,所以它们不应该被打包到 WAR.
GlassFish 已经有 Java EE jar,但您将需要它用于编译目的,因此您必须为这些 jar 添加依赖项,但提供 "provided" 范围,因此这些 jar 不会捆绑在您的 war 或 ear 文件中。请看下面的例子
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
我正在开发一个 Java EE 应用程序,我打算 运行 它在 Java EE 应用程序服务器上(我选择了 Glassfish)。
我知道 Glassfish 是 Java EE 平台的参考实现 (RI),它 implements/contains Java EE 规范的独立参考实现。如果我错了请纠正我,但这让我明白 Glassfish 的二进制文件将包含所有相关的 RIs 罐子。
我正在使用 Maven 作为我的 build/project 管理系统,我将 build/package 我的应用程序放在 WAR 文件中(因为我的应用程序是 Java EE web应用)。然后,我会将此 WAR 部署到我的应用程序服务器 - Glassfish,然后 运行s.
我的问题是,我是否需要在我的 Maven pom.xml 文件中指定 Java EE 依赖项?
我正在使用 Eclipse 作为我的 IDE,目前我需要包含这些依赖项,否则 Eclipse 将无法识别 Java EE 源 - 它会抱怨编译时错误。
但是如果我确实包含在我的 pom.xml 中,那并不意味着我在我的应用程序中(在 WAR文件),而像 Glassfish 这样的应用服务器已经提供了它?因为 Maven 下载这些 jar 并放入您的代码库中 - 对吗?
for.eg(仅以JMS为例):
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
我需要以上吗?我知道如果我针对 Tomcat 进行开发,我肯定会这样做,因为它是一个 Servlet 容器并且没有其他完整的 Java EE 规范。
- 这是我有点困惑的部分,我希望有人能对此有所启发。
是的。你需要用范围标记它们 provided
告诉 Maven 它应该在编译时使用它们,但是在运行时实现由应用程序服务器提供,所以它们不应该被打包到 WAR.
GlassFish 已经有 Java EE jar,但您将需要它用于编译目的,因此您必须为这些 jar 添加依赖项,但提供 "provided" 范围,因此这些 jar 不会捆绑在您的 war 或 ear 文件中。请看下面的例子
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>