我正在尝试为集成测试提出并行maven测试执行。
在测试执行开始之前使用sql-maven-plugin创建测试数据库,结合maven surefire插件参数和并行执行,似乎是一个很好的方法。
我无法理解的是如何使用surefire插件设置的系统属性,使用sql-maven-plugin(或任何其他插件)。我的设置失败了。
surefire插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkCount>2</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<databaseSchema>test_schema_${surefire.forkNumber}</databaseSchema>
</systemPropertyVariables>
</configuration>
</plugin>
sql-maven-plugin配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
</dependencies>
<configuration>
<driver>com.mysql.jdbc.Driver</driver>
<username>user_with_create_privs</username>
<password>password</password>
<url>jdbc:mysql://localhost/dummy_schema</url>
</configuration>
<executions>
<execution>
<id>create-db</id>
<phase>process-test-classes</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<url>jdbc:mysql://localhost/dummy_schema</url>
<autocommit>true</autocommit>
<sqlCommand>create database ${databaseSchema}</sqlCommand>
</configuration>
</execution>
</executions>
</plugin>
shell执行:
mvn test
结果输出:
[DEBUG] SQL: drop database ${databaseSchema}
[ERROR] Failed to execute: drop database ${databaseSchema}
[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute
(create-db) on project billing-core: You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right
syntax to use near '{databaseSchema}' at line 1 -> [Help 1]
因此,看起来没有填充$ {databaseSchema}或语法问题。我已经摆弄了,但是虽然看起来很容易并且应该这样做但是不能让它工作。
答案 0 :(得分:1)
您可能会混淆Maven的属性,Java系统属性和环境变量。您希望使用的变量看起来像Maven属性。
您可以在属性元素中定义POM中的属性。此外,您可以使用$ {env.PropertyName}表单引用环境变量,使用$ {java.PropertyName}表单引用Java系统属性。
您可以参考此信息获取更多信息:https://maven.apache.org/pom.html#Properties