使用后期构建脚本

下面是一个示例,说明如何使用 Invoker 插件运行一组 Maven 项目,然后使用BeanShellGroovy脚本验证它们的输出。在这种情况下,脚本文件的名称是verify.bsh

<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-invoker-plugin</artifactId>
        <version>1.3</version>
        <configuration>
          <debug>true</debug>
          <projectsDirectory>src/it</projectsDirectory>
          <pomIncludes>
            <pomInclude>**/pom.xml</pomInclude>
          </pomIncludes>
          <pomExcludes>
            <pomExclude>**/child*/pom.xml</pomExclude>
            <pomExclude>**/module*/pom.xml</pomExclude>
          </pomExcludes>
          <postBuildHookScript>verify.bsh</postBuildHookScript>
        </configuration>
        <executions>
          <execution>
            <id>integration-test</id>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
       </executions>
      </plugin>
    </plugins>
  </build>
</project>

这是一个示例构建后 BeanShell 脚本 ( verify.bsh ),它在构建运行后检查 JAR 文件是否存在。如果 JAR 文件不存在,则脚本返回false,这会导致 Invoker Plugin 记录构建失败。更准确地说,任何不等于true的返回值都将被解释为失败条件。当然,如果脚本由于异常而异常存在,插件也会将相应的构建标记为失败。

import java.io.*;

try
{
    File file = new File( basedir, "target/my-test-project-1.0-SNAPSHOT.jar" );
    if ( !file.isFile() )
    {
        System.err.println( "Could not find generated JAR: " + file );
        return false;
    }
}
catch( Throwable t )
{
    t.printStackTrace();
    return false;
}

return true;

作为构建后挂钩脚本的补充,您还可以创建将在调用 Maven 之前运行的构建前挂钩脚本。这可以用来为构建做一些准备。

为了允许脚本从测试项目中定位文件,Invoker 插件将在运行脚本之前定义以下全局变量:

姓名 类型 描述 自从
基于的 java.io.文件 测试项目基目录的绝对路径。 1.0
本地存储库路径 java.io.文件 用于在测试项目上调用 Maven 的本地存储库的绝对路径。 1.3