在我们的maven构建中 - 我们使用构建的默认配置文件和测试的不同配置文件。当我们的测试在默认配置文件下运行时,由于各种原因它们会中断。
例如,我们的团队使用我们的构建很好
mvn -Pfoo verify
使用我们的构建,我们的团队很糟糕
mvn verify
我们希望鼓励团队成员在“foo”下运行测试。生命周期,并在他们不知道时警告他们。
我目前解决此问题的方法是为默认配置文件创建一个新的surefire测试,排除除新DefaultProfileWarningTest
之外的所有测试,其唯一目的是告诉用户在{{下运行测试1}}个人资料。
所以测试可能看起来像:
foo
在public class DefaultProfileWarningTest {
@Test
public void displayWarning() {
System.out.println("The tests aren't running - you should have run **mvn -Pfoo verify**");
}
}
中执行类似于:
pom.xml
但这似乎是一个过度紧张的污泥。假设我们无法修复配置文件 - 当验证阶段是默认配置文件时,是否有一种简单的轻量级方式向用户显示消息?
我的问题是:在maven中 - 如何在默认执行时运行验证阶段时向用户显示消息?
答案 0 :(得分:0)
一种可能的解决方案是定义执行带有maven-antrun-plugin
任务的消息的echo
。使用属性skip
在foo
个人资料下运行时会跳过此选项。该切换可以由Maven属性制作,默认情况下设置为true
个人资料中的foo
和false
。
请考虑以下事项:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo>The tests aren't running - you should have run mvn -Pfoo verify</echo>
</target>
<skip>${isRightProfile}</skip>
</configuration>
</execution>
</executions>
</plugin>
然后您可以像这样配置您的个人资料:
<profile>
<id>foo</id>
<properties>
<isRightProfile>true</isRightProfile>
</properties>
</profile>
<profile>
<id>my-default-profile</id>
<properties>
<isRightProfile>false</isRightProfile>
</properties>
<!-- rest unchanged -->
</profile>
激活foo
配置文件后,isRightProfile
属性将设置为true
,因此将跳过AntRun插件的执行,不会打印任何消息。激活默认配置文件后,此属性将设置为false
,并且将回显消息。
答案 1 :(得分:0)
您只需使用echo-maven-plugin之类的相应插件即可打印出消息。
<plugin>
<groupId>com.soebes.maven.plugins</groupId>
<artifactId>echo-maven-plugin</artifactId>
<version>0.2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>echo</goal>
</goals>
</execution>
</executions>
<configuration>
<echos>
<echo>This is the Text which will be printed out.</echo>
</echos>
</configuration>
</plugin>
如果您想强迫人们使用特定的个人资料,您应该使用maven-enforcer-plugin,这会强制您使用特定的个人资料。