如何在 arquillian 服务部署中添加库? [英] How to add library in arquillian service deployment?

查看:22
本文介绍了如何在 arquillian 服务部署中添加库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在将 Arquillian 用于 jboss(remote) 并且我正在尝试让 Jmockit 工作.我部署了一个工作正常的耳朵,但我收到了 arquillian-service 的错误:

i'm currently using Arquillian for jboss(remote) and i'm trying to make Jmockit work. I deployed an ear which works fine, but i'm getting this error for arquillian-service:

java.lang.NoClassDefFoundError: mockit/internal/state/TestRun

Caused by: java.lang.ClassNotFoundException: mockit.internal.state.TestRun from 
[Module "deployment.arquillian-service:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)

我正在使用 jMockit 1.7 并在 EAR 部署中使用它.

I'm using jMockit 1.7 and have it in EAR deployment.

如何在此部署中添加库(arquillian-service)

How can i add library in this deployment (arquillian-service)

PS:此部署由 arquillian 管理,我与它无关.

PS: This deployment is managed by arquillian, i have nothing to do with it.

推荐答案

我解决了第三方libs的问题如下——依赖列表:

I solved the problem of third-party libs as follows - the list of dependencies:

protected static final String[] DEPENDENCIES = {
        ...,
        "xbean:xbean:2.4.0",
        ...
};

将它们全部打包到单独的 jar 中的方法:

Method which packs all them into separate jar:

protected JavaArchive thirdPartyLibs() {
    JavaArchive lib = ShrinkWrap.create(JavaArchive.class, "libs.jar");
    for (String dependency : DEPENDENCIES) {
        lib.merge(Maven.resolver().resolve(dependency).withoutTransitivity().asSingle(JavaArchive.class));
    }
    return lib;
}

最终我在打包核心 jar 时合并它:

Eventually I merge it when packing core jar:

protected JavaArchive createJar() {
    return ShrinkWrap.create(JavaArchive.class, "test.jar")
            .addAsManifestResource("META-INF/test-persistence.xml", ArchivePaths.create("persistence.xml"))
            .addAsManifestResource("META-INF/test-beans.xml", ArchivePaths.create("beans.xml"))
            .....
            .merge(thirdPartyLibs());
}

还必须指出下一个依赖项的使用:

Also to use this next dependencies must be pointed out:

    <dependency>
        <groupId>org.jboss.shrinkwrap.resolver</groupId>
        <artifactId>shrinkwrap-resolver-bom</artifactId>
        <version>2.1.1</version>
        <scope>test</scope>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>org.jboss.shrinkwrap.resolver</groupId>
        <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.shrinkwrap.resolver</groupId>
        <artifactId>shrinkwrap-resolver-impl-maven-archive</artifactId>
        <scope>test</scope>
    </dependency>

这篇关于如何在 arquillian 服务部署中添加库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆