Maven 3插件 - 如何以编程方式排除依赖项及其所有传递依赖项?

时间:2012-11-25 17:01:17

标签: java maven maven-3 maven-plugin

我正在开发一个Maven 3插件,我希望在插件中将配置设置为true时排除某些依赖项及其传递依赖项。

即使在个人资料中,我也不想在POM本身中使用<exclusions>。我想以编程方式排除这些依赖项。事实上,当插件配置设置为true时,我想要的是防止依赖jar包含在最终的战争中(我正在建立战争)。

我试过了:

@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中?

0 个答案:

没有答案