【问题标题】:Understanding the common Maven plugin code format了解常见的 Maven 插件代码格式
【发布时间】:2015-07-27 04:10:33
【问题描述】:

浏览maven-plugin源代码(例如'clean-plugin'),发现verify.bsh文件,内容为

import java.io.*;
import java.util.*;
import java.util.jar.*;
import java.util.regex.*;

try
{
    File targetDir = new File( basedir, "target" );
    System.out.println( "Checking for absence of " + targetDir );
    if ( targetDir.exists() )
    {
        System.out.println( "FAILURE!" );
        return false;
    }
}
catch( Throwable t )
{
    t.printStackTrace();
    return false;
}

return true;

我想知道,这到底是什么?这似乎是 Java 代码,但我在这里看不到任何 classmethodmain。请帮助我理解这一点。

【问题讨论】:

    标签: maven maven-plugin


    【解决方案1】:

    它似乎是使用maven-invoker-plugin 启动的集成测试的一部分。

    您提到的测试会创建符号链接并检查 build clean 插件后是否确实删除了其中包含符号链接的目录。

    【讨论】:

    • 感谢您的链接。BeanShell 脚本对我来说似乎是新事物。你能解释一下吗?这段代码究竟是如何调用的。因为没有class,所以没有main
    • 坦率地说,我不知道 =) 我也是第一次遇到这种情况,所以我也很好奇..
    【解决方案2】:

    正如第一个答案中提到的,这是beanshell 代码,用于通过 maven-invoker-plugin 运行集成测试。 BeanShell 的问题在于,似乎不再有积极的开发(svn 存储库无法访问等)。我更喜欢 Groovy 来编写与集成测试相关的集成测试。

    代码的调用是通过 maven-invoker-plugin 设置一个 maven 环境来完成的,maven-invoker-plugin 执行一个完整的 maven 调用,之后您可以检查目标文件夹的内容或者可能是 build.log 的内容(mvn运行期间的输出)是否包含预期的内容。

    在插件中你usually have the following structure:

    ./
    +- pom.xml
    +- src/
       +- it/
          +- settings.xml
          +- first-it/
          |  +- pom.xml
          |  +- src/
          +- second-it/
             +- pom.xml
             +- invoker.properties
             +- test.properties
             +- verify.bsh
             +- src/
    

    src/it 包含插件的集成测试。例如,第二个它包含一个带有 pom.xml 文件等的单独 maven 项目,它将在集成测试期间通过 maven 运行。 verify.bsh 将在 Maven 调用结束后调用,以检查一切是否符合预期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      相关资源
      最近更新 更多