项目 运行 用于 mvn 测试但不是 运行 用于 mvn 测试 -P<<profile_name>>

Project running for mvn test but not running for mvn test -P<<profile_name>>

在发布这个问题之前,我浏览了很多文章和 SO 帖子。我创建了 2 个 Maven 配置文件,每个环境一个。当我 运行 我的 pom.xml 通过 eclipse 的 运行 As > Maven 测试时,测试被执行。但是当我通过 运行 配置执行它时,为此目的,我创建了一个名为 "Test Project" 的 运行 配置,其中 Maven 目标设置为 "test",配置文件设置为 "staging",执行抛出

There was an error in the forked process [ERROR] com/beust/jcommander/ParameterException : Unsupported major.minor version 52.0 [ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process [ERROR] com/beust/jcommander/ParameterException : Unsupported major.minor version 52.0

如果是java版本问题,那么我执行运行 As > Maven test时应该没有执行。

这是我的 pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>com.sample</groupId>
<artifactId>TestProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>TestProject</name>
<url>http://maven.apache.org</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<profiles>
    <profile>
        <id>staging</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20</version>
                    <configuration>
                        <suiteXmlFiles>
                            <suiteXmlFile>testng.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

    <profile>
        <id>prod</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20</version>
                    <configuration>
                        <suiteXmlFiles>
                            <suiteXmlFile>testng2.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

<dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.11</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.uncommons/reportng -->
    <dependency>
        <groupId>org.uncommons</groupId>
        <artifactId>reportng</artifactId>
        <version>1.1.4</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

</dependencies>

testng.xml和testng2.xml除了参数值不同外其他都差不多。 这是我的 testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite verbose="0" name="Test Project suite">
     <parameter name="env" value="staging" /> 
    <test name="Test Project sample tests">
        <classes>
            <class name="com.sample.TestProject.AppTest" />
        </classes>
    </test>
</suite> 

请如下所示添加属性,然后重试。

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

这将导致 JDK 版本需要设置为 1.8。如果你不提供这个,那么默认情况下,Maven 会求助于 1.5 兼容。

当您通过命令行 运行(通过使用 mvn test)时,这是必需的。错误是这个问题的重复。

当你执行 Run as > maven test 时,我猜测你的 IDE 提供的 JDK 会生效(我没有办法从技术上证实这个理论)。

有关其他上下文,您也可以参考 this Whosebug post。