在 Maven 中 - 当默认执行的验证阶段为 运行 时如何向用户显示消息?
In maven - how to display a message to the user when the verify phase is run on the default execution?
在我们的 Maven 构建中 - 我们使用默认配置文件进行构建,并使用不同的配置文件进行测试。当我们的测试在默认配置文件下 运行 时,由于各种原因它们会中断。
例如在我们的团队中使用我们的构建很好
mvn -Pfoo verify
我们的构建在我们的团队中很糟糕
mvn verify
我们想鼓励我们团队中的人 运行 在 'foo' 生命周期下进行测试,并在他们不这样做时发出警告。
我目前解决这个问题的方法是为默认配置文件创建一个新的 surefire 测试,排除所有测试,除了一个新的 DefaultProfileWarningTest
,其唯一目的是告诉用户 运行 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
中执行类似于:
<profiles>
<profile>
<id>foo</id>
...
</profile>
<profile>
<id>my-default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>DefaultProfileWarningTest.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profiles>
但这似乎是一个过度劳累的拼凑。假设我们无法修复配置文件问题 - 当验证阶段针对默认配置文件时,是否有一种简单的轻量级方法向用户显示消息?
我的问题是:在 maven 中 - 如何在默认执行的验证阶段 运行 时向用户显示消息?
一个可能的解决方案是定义 maven-antrun-plugin
that echos a message with the echo
task. It would be skipped when run under the foo
profile, using the attribute skip
的执行。可以从 foo
配置文件中设置为 true
的 Maven 属性 进行切换,默认情况下设置为 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
并且消息将被回显。
您可以简单地使用像 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,它可以强制您使用特定的配置文件。
在我们的 Maven 构建中 - 我们使用默认配置文件进行构建,并使用不同的配置文件进行测试。当我们的测试在默认配置文件下 运行 时,由于各种原因它们会中断。
例如在我们的团队中使用我们的构建很好
mvn -Pfoo verify
我们的构建在我们的团队中很糟糕
mvn verify
我们想鼓励我们团队中的人 运行 在 'foo' 生命周期下进行测试,并在他们不这样做时发出警告。
我目前解决这个问题的方法是为默认配置文件创建一个新的 surefire 测试,排除所有测试,除了一个新的 DefaultProfileWarningTest
,其唯一目的是告诉用户 运行 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
中执行类似于:
<profiles>
<profile>
<id>foo</id>
...
</profile>
<profile>
<id>my-default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>DefaultProfileWarningTest.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profiles>
但这似乎是一个过度劳累的拼凑。假设我们无法修复配置文件问题 - 当验证阶段针对默认配置文件时,是否有一种简单的轻量级方法向用户显示消息?
我的问题是:在 maven 中 - 如何在默认执行的验证阶段 运行 时向用户显示消息?
一个可能的解决方案是定义 maven-antrun-plugin
that echos a message with the echo
task. It would be skipped when run under the foo
profile, using the attribute skip
的执行。可以从 foo
配置文件中设置为 true
的 Maven 属性 进行切换,默认情况下设置为 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
并且消息将被回显。
您可以简单地使用像 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,它可以强制您使用特定的配置文件。