我正在开发一个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中?