【发布时间】:2021-04-12 09:12:22
【问题描述】:
我正在开发自定义 Maven 插件。我希望我的插件为项目添加新的依赖项。
我有以下代码:
@Mojo(name = "generate-model", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
public class ModelGeneratorMojo extends AbstractMojo {
@Parameter(defaultValue = "${project}", required = true, readonly = true)
MavenProject project;
@Override
public void execute() throws MojoExecutionException {
Dependency connectivity = new Dependency();
connectivity.setGroupId("groupid");
connectivity.setArtifactId("artifactid");
connectivity.setVersion("1.0");
//noinspection unchecked
project.getDependencies().add(connectivity);
}
}
好像没有效果,因为我在编译一个包含这个插件的项目时,出现了未解决的符号错误。
我确定该插件已执行,因为我在 target 文件夹中看到由它生成的代码(在我的示例中省略了代码生成)。
【问题讨论】:
-
你能粘贴你至少得到的错误吗?
-
@YassinHajaj 确切的错误是
ERROR] /home/atcvetkov/project/segeraroot/quote-model/target/generated-sources/model/segeraroot/quotemodel/ReadersVisitor.java:[9,43] package segeraroot.connectivity does not exist,但这无关紧要,因为它不是问题的根本原因。发生这种情况是因为没有像我预期的那样将依赖项添加到项目中。 -
您是否将插件绑定到构建过程的正确阶段?
-
想要达到什么目的?如果您将插件添加到添加依赖项的 POM,则可能不会发生任何事情,因为依赖项的解析发生在插件执行之前。
-
@talex 在什么意义上?如果您的插件需要某些东西,您可以将其作为依赖项添加到插件中。为什么一个插件需要项目的依赖?
标签: java maven maven-plugin