我正在开发一个 Maven 3 插件,当插件中的配置设置为时,我想排除一些依赖项及其传递依赖true
项。
我不想<exclusions>
在 POM 本身中使用,即使在配置文件中也是如此。我想以编程方式排除这些依赖项。实际上,当插件配置设置为true
.
我试过了 :
@Mojo(requiresDependencyResolution=ResolutionScope.COMPILE, name="compileHook",defaultPhase=LifecyclePhase.COMPILE)
public class compileHook extends AbstractMojo
{
@Override
public void execute() throws MojoExecutionException, MojoFailureException
{
// ...
Set<Artifact> artifacts = this.project.getArtifacts();
for(Artifact artifact : artifacts)
{
if("org.package.to.remove".equalsIgnoreCase(artifact.getGroupId()))
{
artifact.setScope("provided");
}
}
// ...
}
}
由于这发生在该compile
阶段,它确实会删除组 id 为“org.package.to.remove”的工件,使其在打包时将其 jar 包含在 war 中。但这并没有删除那些依赖项添加的传递工件!
以编程方式从包含在最终 .jar/.war 中删除某些依赖项及其传递依赖项的最佳方法是什么?