簡體   English   中英

Arquillan InvalidEnvironnmentException,建議將已添加的插件添加到Maven pom.xml

[英]Arquillan InvalidEnvironnmentException, suggests to add an already added plugin to Maven pom.xml

我配置了項目,並為一個多模塊項目編寫了測試類。 用Arquillan編寫了對對AS400服務器的業務服務調用的測試,該測試在運行測試時給我一個InvalidEnvironnmentException

package com.my.company.theproject.business.service.protect;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.inject.Inject;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import com.my.company.theproject.common.dataaccess.PojoService;
import com.my.company.theproject.ServiceContext;

@RunWith(Arquillian.class)
public class SampleServiceTest
{

    @Inject
    @PojoService
    SampleService service;

    private ServiceContext context;

    @Before
    public void setUp()
        throws Exception
    {

        context = new ServiceContext();
    }

    @Deployment
    public static WebArchive createDeployment()
    {
        return ShrinkWrap
            .create(WebArchive.class)
            .addClasses(SampleService.class)
            .addAsWebInfResource("META-INF/beans.xml", ArchivePaths.create("beans.xml"))
            .addAsLibraries(
                Maven.configureResolverViaPlugin().importRuntimeDependencies().resolve().withTransitivity().asFile());
    }

    @Test
    public void test()
    {

        List<String> list = new ArrayList<String>();
        list.add("AAA");

        service.getStoredProcedureParameters(context, list);

        fail("To be implemented");
    }
}

我在這里寫下了導入,以防某些錯誤(例如javax.inject.Inject?)。

這里的問題是Arquillian在測試運行時給了我這個錯誤(堆棧跟蹤的第一個異常):

java.lang.RuntimeException:無法調用部署方法:public static org.jboss.shrinkwrap.api.spec.WebArchive com.sopra.banking.packbanque.business.service.protect.SampleServiceTest.createDeployment()

在堆棧跟蹤的末尾,我看到了:

Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.jboss.arquillian.container.test.impl.client.deployment.AnnotationDeploymentScenarioGenerator.invoke(AnnotationDeploymentScenarioGenerator.java:177)
    ... 50 more
Caused by: org.jboss.shrinkwrap.resolver.api.maven.InvalidEnvironmentException: Configuration from environment requires that user has following properties set, however they were not detected in runtime environment:
    maven.execution.pom-file
    maven.execution.offline
    maven.execution.user-settings
    maven.execution.global-settings
    maven.execution.active-profiles

You should enable ShrinkWrap Maven Resolver Plugin to get them set for you automatically if executing from Maven via adding following to your <build> section:

<plugin>
    <groupId>org.jboss.shrinkwrap.resolver</groupId>
    <artifactId>shrinkwrap-resolver-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>propagate-execution-context</goal>
            </goals>
        </execution>
    </executions>
</plugin>

    at org.jboss.shrinkwrap.resolver.impl.maven.task.ConfigureSettingsFromPluginTask.execute(ConfigureSettingsFromPluginTask.java:71)
    at org.jboss.shrinkwrap.resolver.impl.maven.ConfigurableMavenResolverSystemBaseImpl.configureViaPlugin(ConfigurableMavenResolverSystemBaseImpl.java:119)
    at org.jboss.shrinkwrap.resolver.api.maven.Maven.configureResolverViaPlugin(Maven.java:77)
    at org.jboss.shrinkwrap.resolver.api.maven.Maven.configureResolverViaPlugin(Maven.java:59)
    at com.sopra.banking.packbanque.business.service.protect.SampleServiceTest.createDeployment(SampleServiceTest.java:74)
    ... 55 more

問題在於此插件聲明已經在我的Maven pom.xml中!

<build>
    <plugins>
        <plugin>
            <groupId>org.jboss.shrinkwrap.resolver</groupId>
            <artifactId>shrinkwrap-resolver-maven-plugin</artifactId>
            <version>2.2.0-beta-2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>propagate-execution-context</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

這里有什么問題 ?

我認為問題可能是您需要先加載pom文件,然后從現在開始進行解析,否則它就知道何時從中解析依賴項。

我不確定,但是您可以嘗試一下... :)

您可以在此處找到有關shrikwrap解析器的所有信息:

https://github.com/shrinkwrap/resolver

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM