如果";,我如何跳过Maven插件的执行-DskipTests“;或-Dmaven.test.skip=true“;具体是什么?
我使用的是Maven 3.0.3。我有这个插件,通常我希望在执行JUnit测试之前运行它:如果";,我如何跳过Maven插件的执行-DskipTests“;或-Dmaven.test.skip=true“;具体是什么?,maven,testing,plugins,automated-tests,Maven,Testing,Plugins,Automated Tests,我使用的是Maven 3.0.3。我有这个插件,通常我希望在执行JUnit测试之前运行它: 发展 真的 朱尼图瑟酒店 sbjunit ${test.mysql.db.prefix}{project.artifactId} 本地服务器 3306 jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid} com.mysql.jdbc.Driver org.liquibase liquibase mav
发展
真的
朱尼图瑟酒店
sbjunit
${test.mysql.db.prefix}{project.artifactId}
本地服务器
3306
jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}
com.mysql.jdbc.Driver
org.liquibase
liquibase maven插件
2.0.1
mysql
mysql连接器java
5.1.18
建立数据库
过程测试类
com.mysql.jdbc.Driver
jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}
${test.mysql.db.user}
${test.mysql.db.password}
${project.build.directory}/db.changelog-master.xml
假的
更新
但是,如果有人指定了
-Dmaven.test.skip=true
或-DskipTests
,我想跳过这个插件的运行。我该怎么做?我尝试将执行阶段更改为“测试”,但随后我的单元测试在该插件之前运行,这不是我想要的。我认为这不能直接完成,但您可以添加-Dliquibase.should.run=false
以完全跳过liquibase(请参阅)。如果不想同时键入此属性和skipTests
,可以将其绑定到单独的配置文件中
<profiles>
<profile>
<id>skipTestAndDb</id>
<properties>
<skipTests>true</skipTests>
<liquibase.should.run>false</liquibase.should.run>
</properties>
</profile>
</profiles>
SKIPTESTANDB
真的
假的
然后您只需键入
mvn install-PskipTestAndDb
尝试将其添加到如下示例中的配置文件中(但是,这仅适用于未指定maven.test.skip
的情况:
<profiles>
<profile>
<id>execute-liquibase</id>
<activation>
<property>
<name>!maven.test.skip</name>
</property>
</activation>
<build>
<plugins>
<!-- Run the liquibase scripts -->
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>2.0.1</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>build-database</id>
<phase>process-test-classes</phase>
<configuration>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}</url>
<username>${test.mysql.db.user}</username>
<password>${test.mysql.db.password}</password>
<changeLogFile>${project.build.directory}/db.changelog-master.xml</changeLogFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profiles>
液化
!maven.test.skip
org.liquibase
liquibase maven插件
2.0.1
mysql
mysql连接器java
5.1.18
建立数据库
过程测试类
com.mysql.jdbc.Driver
jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}
${test.mysql.db.user}
${test.mysql.db.password}
${project.build.directory}/db.changelog-master.xml
假的
更新
您可以使用在使用单元测试跳过属性之一时激活的配置文件来设置新属性(例如,skipLiquibaseRun
),该属性在liquibase是否应运行时保留标志
违约
,例如:
${skipLiquibaseRun}
com.mysql.jdbc.Driver
jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}
${test.mysql.db.user}
${test.mysql.db.password}
${project.build.directory}/db.changelog-master.xml
假的
没有经过测试,但希望它能工作;-)这对我来说很有效:
<configuration>
<skip>${skipTests}</skip>
</configuration>
${skipTests}
或
<configuration>
<skip>${maven.test.skip}</skip>
</configuration>
${maven.test.skip}
我认为最直接的方法是在POM中级联“跳过”属性:
<properties>
<maven.test.skip>false</maven.test.skip>
<skipTests>${maven.test.skip}</skipTests>
<skipITs>${skipTests}</skipITs>
</properties>
假的
${maven.test.skip}
${skipTests}
然后,您可以在插件配置中使用上面设置的最后一个“跳过”属性:
<configuration>
<skip>${skipITs}</skip>
</configuration>
${skippits}
有关此答案中提到的每个不同“跳过”属性的更多详细信息,请参阅。对于配置中不支持跳过的插件,有另一种不使用配置文件的方法来跳过。
在阶段声明中,可以附加属性pluginxyz.skip
e、 g
...
org.xyz
xyzmaven插件
2.0.1
建立数据库
进程测试类${pluginxyz.skip}
....
然后,当从命令行执行时,可以添加-Dpluginxyz.skip=true
,它将true
值附加到阶段名称
由于没有称为流程测试类strue的阶段
目标将不会执行。您创建了“liquibase.should.run”属性,对吗?您如何使该属性表示插件不运行?您必须向liquibase插件执行中添加什么代码?我的代码已经是配置文件的一部分。我喜欢你的解决方案,但我不想忽略我个人资料中正在执行的所有内容。那么,我想你应该进一步描述你的问题,因为这一点还没有立即变得清楚。也许你可以提供更多的细节。我的问题是——如果有人指定“-Dmaven.test.skip=true”或“-DskipTests”,我想阻止插件(在问题中列出)执行。I公司