Maven插件MOJO在解决依赖项时停止构建

要复制的示例:https://github.com/g4s8/example-plugin

我正在尝试创建可与已编译测试类一起使用的Maven插件。在访问test-classes文件之前,它必须解析类路径。我在surefire-maven-plugin的源代码中观察到了类路径解析机制,但是我的实现更为简单(请参见https://github.com/g4s8/example-plugin/blob/master/example-maven-plugin/src/main/java/wtf/g4s8/RunWithClasspathMojo.java#L43-L49):

// resolve all dependencies for current project
final Set<Artifact> artifacts = this.repos.resolve(
        new ArtifactResolutionRequest()
            .setartifact(this.project.getartifact())
            .setLocalRepository(this.lrep)
            .setRemoteRepositories(this.project.getRemoteArtifactRepositories())
            .setResolveTransitively(true)
).getartifacts();

此插件可以正常工作,但是在首次运行后,它将中断项目的所有下一个版本(请参见example-project):maven-jar-plugin失败,并出现错误:

  

[错误]无法在项目example-project上执行目标org.apache.maven.plugins:maven-jar-plugin:3.0.2:jar(默认jar):您必须使用分类器来附加补充工件而不是替换它们。 -> [帮助1]

如果我使用-DskipTests禁用插件或只是删除了 解决依赖关系的代码,目标项目将成功构建。

我想ArtifactRepository.resolve会以某种方式影响当前的版本。

这段代码有什么问题,以及如何正确地从插件中解析Maven项目的依赖类路径?

whywjh 回答:Maven插件MOJO在解决依赖项时停止构建

在Mojo的第一行(您还定义了相位等),您需要将@requiresDependencyResolution设置为test

本文链接:https://www.f2er.com/3143275.html

大家都在问