Maven插件-如何向现有MavenProject对象添加依赖项

thtygnil  于 2023-02-18  发布在  Maven
关注(0)|答案(2)|浏览(156)

我正在写一个Maven插件。在插件中,我想扩展我的主Maven项目和额外的依赖关系,并获得所有的依赖关系复制到我的本地项目。
基于一些"互联网研究",我从下面的代码开始:
//添加依赖项

Artifact poi = artifactFactory.createArtifact("org.apache.poi", "poi", "5.1.0",Artifact.SCOPE_COMPILE, "jar");
            
Set set = new HashSet(project.getDependencyArtifacts() );
set.add( poi );
project.setDependencyArtifacts( set );

//获取"复制"的依赖项

executeMojo(plugin(groupId("org.apache.maven.plugins"), artifactId("maven-dependency-plugin"), version("2.8")),goal("copy-dependencies"),
configuration(element(name("outputDirectory"), unpackDependenciesDirectory.getAbsolutePath()),
element(name("includeTypes"), "jar"),
element(name("includeScope"), "compile")),
executionEnvironment(project, session, buildPluginManager));

然而,只有原始的依赖项被下载-而不是新的。我错过了什么?我需要做什么来扩展依赖项列表?(会期望像更新我的项目这样的事情?但没有这样的"方法")
此外,我看到setDependencyArtifacts被设置为已弃用,但我还没有找到任何文档说明为什么-所以任何见解也是受欢迎的。
先谢了!

mcdcgff0

mcdcgff01#

您不能在构建过程中向项目添加依赖项。依赖项在任何插件运行之前都已解决。
您可以使用单独的Maven目标更新或更改依赖项,就像maven依赖项插件的目标一样。

soat7uwm

soat7uwm2#

首先感谢Fabian和Karl-Heinz给我的反馈和意见,是的,你说的没错
1.根本不是个好主意
1.无法更改/更新Maven插件中的依赖项。
(at在当前maven版本中最少;不确定这在早期是否可能,因为我已经看到一些代码片段,至少建议它)。
因此,我最终采用了上面Fabian建议的解决方案-在父项目中简单地定义一个依赖项(类型为pom)。
无论如何:如果有人需要解决和下载额外的maven(或ivy)依赖项,我现在也可以推荐Jeka ;- )。见:

相关问题