Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Intellij中的测试jar进行Spring引导_Java_Maven_Spring Boot_Hk2 - Fatal编程技术网

Java 使用Intellij中的测试jar进行Spring引导

Java 使用Intellij中的测试jar进行Spring引导,java,maven,spring-boot,hk2,Java,Maven,Spring Boot,Hk2,您好,我有一个spring引导应用程序,可以从命令行正常运行。但是,当我从ide(intellij)运行它时,它会在每个http请求上失败。我遇到的问题是,在ide中,一个测试jar(在maven中定义为测试)与我在应用程序中的hk2 jar冲突 我不能将hk2类从测试jar中排除,因为它有阴影 当然,在我的测试中也会发生这种情况。所以我的问题是如何保证spring boot只加载生产jar而不加载测试jar。我担心我的测试可能没有测试正确的二进制文件 让集成测试执行已编译的应用程序是一个解决方

您好,我有一个spring引导应用程序,可以从命令行正常运行。但是,当我从ide(intellij)运行它时,它会在每个http请求上失败。我遇到的问题是,在ide中,一个测试jar(在maven中定义为测试)与我在应用程序中的hk2 jar冲突

我不能将hk2类从测试jar中排除,因为它有阴影

当然,在我的测试中也会发生这种情况。所以我的问题是如何保证spring boot只加载生产jar而不加载测试jar。我担心我的测试可能没有测试正确的二进制文件

让集成测试执行已编译的应用程序是一个解决方案,但是我希望在ide中运行它,而无需每次重新编译代码

测试jar是testcontainers postgres 1.1.5


谢谢

如果您愿意信任
testcontainers的hk2着色类
,那么您可以定义两个maven配置文件,一个用于生产,另一个用于测试,我称之为hk2testproduction配置文件(默认激活)包括hk2,而hk2test包括testcontainers。它们是相互排斥的

定义2个maven配置文件

<profiles>
    <profile>
        <id>production</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>

        <dependencies>
            <dependency>
                <groupId>org.glassfish.hk2</groupId>
                <artifactId>hk2</artifactId>
            </dependency>
        </dependencies>

    </profile>

    <profile>
        <id>unit test</id>
        <activation>
            <property>
                <name>hk2test</name>
            </property>
        </activation>

        <dependencies>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>
$ mvn -Dhk2test test