项目 运行 用于 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。
在发布这个问题之前,我浏览了很多文章和 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。