当前位置: 首页 > 面试题库 >

如何以编程方式调用Maven任务

徐皓君
2023-03-14
问题内容

我在另一个构建工具的情况下使用Maven(leiningen为Clojure的,但是这不应该事),我想知道我会怎么称呼像一个插件的依赖:集结类路径编程(即通过Maven-
API,而不是通过mvn-command)。


问题答案:

请参阅如何从maven-plugin-testing-
harness实现org.apache.maven.plugin.testing.AbstractMojoTestCase。这是我的一些测试中的代码片段,可能会有所帮助。

public abstract class JAXBGenerateTest extends AbstractMojoTestCase {

    static {
        System.setProperty("basedir", getBaseDir().getAbsolutePath());
    }

    protected MavenProjectBuilder mavenProjectBuilder;

    protected void setUp() throws Exception {
        super.setUp();

        mavenProjectBuilder = (MavenProjectBuilder) getContainer().lookup(
                MavenProjectBuilder.ROLE);
    }

    protected static File getBaseDir() {...}

    /**
     * Validate the generation of a java files from purchaseorder.xsd.
     * 
     * @throws MojoExecutionException
     */
    public void testExecute() throws Exception {

        final File pom = new File(getBaseDir(),
        "src/test/resources/test-pom.xml");

        final ArtifactRepository localRepository = new DefaultArtifactRepository( "local",

                new File(getBaseDir(), "target/test-repository").toURI().toURL().toString()             , new DefaultRepositoryLayout());


        final MavenProject mavenProject = mavenProjectBuilder.build(pom, localRepository, null);


        final XJC2Mojo generator = (XJC2Mojo) lookupMojo("generate", pom);
        generator.setProject(mavenProject);
        generator.setLocalRepository(localRepository);
        generator.setSchemaDirectory(new File(getBaseDir(),"src/test/resources/"));
        generator.setSchemaIncludes(new String[] { "*.xsd" });
        generator.setBindingIncludes(new String[] { "*.xjb" });
        generator.setGenerateDirectory(new File(getBaseDir(), "target/test/generated-sources"));
        generator.setVerbose(true);
        generator.setGeneratePackage("unittest");
        generator.setRemoveOldOutput(false);

        generator.execute();
    }

}


 类似资料:
  • 问题内容: 作为单元测试的一部分,我想调用限于错误信号部分的pylint检查器。因此我检查了pylint可执行脚本,进入了helper类,在那里我迷失了一个很长的函数,最后以调用。 有人尝试过并设法这样做吗? 梦想计划是这样的: 有什么提示吗?除了“复制方法并跳过”之外,我的意思是? 我并不 需要 通过运行测试,它也可能是或其他软件:随时提出替代方案。谢谢! 问题答案: 看一下,其中包含以编程方式

  • 在新的 AppCompat 库中,我们可以按以下方式对按钮进行着色: 如何在代码中以编程方式设置按钮的色调?我基本上尝试根据一些用户输入实现按钮的条件着色。

  • 问题内容: 如何以编程方式为特定类启用断言,而不是指定命令行参数“ -ea”? 问题答案: 这是对@bala好的答案的评论,但时间太长。 如果仅启用断言,则调用您的主类-您的主类将在启用断言之前加载,因此您可能需要一个不直接引用代码中其他内容的加载器。它可以设置断言,然后通过反射加载其余代码。 如果在加载类时未启用断言,则应立即将其“编译出”,这样您就无法打开和关闭它们。如果要切换它们,则根本不需

  • 问题内容: 我需要在我的应用程序中动态创建任务。我怎样才能做到这一点?我可以获取带有注释的调度程序,但是调度程序需要对象。我需要提供Spring对象,以便我的任务也可以使用注释。 问题答案: 您只需要将目标对象包装在中,然后提交:

  • 在Android 9中 我还在清单文件中添加了必需的权限。 当我运行这个程序时,它告诉我解析包错误时出现了问题。

  • 问题内容: 我已经看到这个问题问过其他平台/语言-有什么想法吗?我想做类似的事情: 我希望能够在调试时切换键盘输入作为脚本的开始,这样我就可以花点时间启动chrome来监听我的节点检查器端口。 ***快速更新-我猜我实际上可以使用“ process.argv”来检测–debug是否传入。这是最佳/正确的方法吗? 问题答案: 在调试模式下运行时,NodeJS创建一个全局对象: 因此,可能的解决方案是