0

我正在研究 ejb3 并使用 arqullian 进行测试。我在 pom.xml 中有以下依赖项

  <dependency>
        <groupId>org.glassfish.main.ejb</groupId>
        <artifactId>javax.ejb</artifactId>
    </dependency>

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
    </dependency>


    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.arquillian.container</groupId>
        <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.glassfish.main.extras</groupId>
        <artifactId>glassfish-embedded-all</artifactId>
        <version>3.1.2</version>
        <scope>test</scope>
    </dependency>

在运行测试用例时,我需要排除前两个依赖项,但它在测试时间之外可用。

怎样才能做到这一点?

任何帮助深表感谢。

4

2 回答 2

0

我相信您可以javaee-api单独使用依赖项,因为您可以从中获取 EJB API。但是,您应该将其指定为具有provided范围的依赖项,因为它不能用于编译测试以外的任何事情,并且由容器在运行时提供(在本例中为嵌入式 GlassFish)。

如果您在使用 javaee-api 时遇到问题,您可以尝试使用JBoss Java EE 6 API,因为它们不包含任何精简的方法体,这些方法体通常是javaee-api依赖问题的根源。

于 2013-02-23T15:01:29.873 回答
0

当您拥有 Java EE 6 时,您需要拥有完整的 Java EE API(如 Vineet 编写)而不是 Java EE 本身。对于 Java EE 7,javaee-api 依赖项足以编译。但是您需要 Java EE API 来编译您的代码,并且它必须提供范围(这意味着 Maven 使用它进行编译但不将 jars 添加到存档中,因为容器提供了它们)Java EE 依赖关系的范围,并且可能删除了对 EJB 的依赖关系.

这是我的 JBoss 和 Java EE 7 工作示例。这些依赖项足以运行带有嵌入式容器的 Arqullian:

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

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-arquillian-container-embedded</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-embedded</artifactId>
        <scope>test</scope>
    </dependency>

这是 Java EE 6 规范 API 的依赖关系管理。我将它用于 Arqullian 测试而不是 javaee-api。

    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>1.0.0.Final</version>
        <scope>provided</scope>
        <type>pom</type>
    </dependency>
于 2015-11-23T16:37:00.967 回答