在maven中 - 如何在默认执行时运行验证阶段时向用户显示消息?

时间:2016-04-02 11:05:39

标签: java maven warnings maven-surefire-plugin

在我们的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中 - 如何在默认执行时运行验证阶段时向用户显示消息?

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案是定义执行带有maven-antrun-plugin任务的消息的echo。使用属性skipfoo个人资料下运行时会跳过此选项。该切换可以由Maven属性制作,默认情况下设置为true个人资料中的foofalse

请考虑以下事项:

<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,这会强制您使用特定的个人资料。