首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿基利安ShrinkWrap

阿基利安ShrinkWrap
EN

Stack Overflow用户
提问于 2014-10-11 15:08:59
回答 1查看 1K关注 0票数 3

我在使用JUnit依赖项创建pom.xml测试时遇到了问题。

这个测试是和阿基利安一起运行的。

@RunWith(Arquillian.class)

在这种方法中

@Deployment静态JavaArchive createDeployment() {

首先,我用正在测试的项目包创建了一个JavaArchive

JavaArchive merge = ShrinkWrap.create(JavaArchive.class). addPackages(true, "migrazioneGeaPersistenzaTampone", "migrazioneGeaPersistenza", "it.\*\*.mistral.importGEA4.task", "migrazioneGeaPersistenzaAccess" ). addClasses(java.sql.Connection.class) .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");

然后,当我启动测试时,就会有一些缺少的依赖项。

代码语言:javascript
复制
Unable to resolve any beans for Types: [class it.**.**.be.service.EnvironmentRootService]

存在于这种依赖关系中

<dependency> <groupId>it.\*\*.mistral</groupId> <artifactId>mistral-be</artifactId> <version>0.1.0</version> <scope>compile</scope> </dependency>

我尝试了很多不同的方法来添加这些依赖项,最好的方法似乎是使用ShrinkWrap解析器(https://github.com/shrinkwrap/resolver/blob/master/README.asciidoc,特别是这个段落的https://github.com/shrinkwrap/resolver/blob/master/README.asciidoc#resolution-of-artifacts-defined-in-pom-files)。

a)

Maven.resolver().loadPomFromFile(path_to_pom_file).档案= JavaArchive[]档案importDependencies(ScopeType.TEST,ScopeType.COMPILE)。resolve().withTransitivity().as(JavaArchive.class);

Maven.resolver().loadPomFromFile("/path/to/pom.xml").importRuntimeDependencies() .resolve().withTransitivity().asFile();

依赖关系在任何一种情况下都会被忽略(我遗漏了什么?)

b)

Maven.configureResolver().workOffline(). JavaArchive[] mistral_be =resolve("it.**.mistral:mistral-be:0.1.0").withTransitivity().as(JavaArchive.class); 对于(int i= 0;i< mistral_be.length;i++) { merge = merge.merge(mistral_bei); }

用一个简单的

代码语言:javascript
复制
System.out.println(merge.toString(true));

我可以看到来自依赖项的所有文件都存在!无论如何,我使用本地存储库workoffline(),也许我缺少了一些依赖关系?

但是,使用

代码语言:javascript
复制
return merge;

引发"java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError by: java.lang.ClassNotFoundException: com.google.protobuf.GeneratedMessage“错误。

然后,我再一次尝试添加缺少的依赖项。

// Tryn'g以添加protobuf依赖项JavaArchive[] prto_buf = 对于(int i= 0;i< prto_buf.length;i++) { projectPackages = projectPackages.merge(prto_bufi);}

扔sameException..。再一次,用一个简单的

代码语言:javascript
复制
System.out.println(merge.toString(true));

我可以看到com.Google.protobuf.GeneratedMessage在场

依赖关系的提取:

代码语言:javascript
复制
   <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>1.0.0.Final</version>
        <type>pom</type>
        <scope>provided</scope>
    </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-weld-ee-embedded-1.1</artifactId>
        <version>1.0.0.CR3</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.shrinkwrap.resolver</groupId>
        <artifactId>shrinkwrap-resolver-depchain</artifactId>
        <version>2.1.0</version>
        <scope>test</scope>
    </dependency>


</dependencies>


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>1.1.5.Final</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-13 11:57:38

对我来说,这闻起来像一个类装载问题。特别是考虑到您使用的是嵌入式容器,它基本上获取了项目类路径中的所有内容。

部署应用程序的目标容器是什么?也许,如果您尝试在那里运行您的测试而不是嵌入式容器,您至少会发现这是否真的是问题所在,或者您的部署工件仍然有问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26316065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档