1

我正在开发一个 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 中删除某些依赖项及其传递依赖项的最佳方法是什么?

4

0 回答 0