Maven3:如何在自定义Maven扩展中获取所有项目依赖项

时间:2018-08-17 05:04:38

标签: java maven-3 maven-dependency maven-extension

在Maven 3.x中,如何获取项目的所有依赖关系,包括自定义maven扩展中的传递对象(通过不使用Aether)

目前我有这个:

 @Component(role = AbstractMavenLifecycleParticipant.class, hint = "Test")
 public class sampleExtension extends AbstractMavenLifecycleParticipant implements LogEnabled {

   private Logger logger;

   @Override
   public void afterSessionStart(MavenSession session)
        throws MavenExecutionException {
  this.logger.info("Starting afterSessionStart()");
}

@Override
public void afterProjectsRead(MavenSession session)
        throws MavenExecutionException {
      MavenProject pr = session.getCurrentProject();

    List dependencies = pr.getDependencies();

    this.logger.info("Project name and Size of dependencies: " + pr.getArtifactId() + " : " + dependencies.size()); 
}

@Override
public void enableLogging(Logger logger) {
    this.logger = logger;
}

}

我正在构建此扩展jar,并将其放在$ Maven_home / lib / ext中。我选择了一个随机的Maven项目(将其称为“ abc”)并运行了命令:mvn clean install,从日志中将依赖项的数量显示为13。好像我在'abc'上运行mvndependency:copy-dependencies一样,我看到复制到目标文件夹的依赖项超过200个。

最终,我要做的是获取扩展类中项目的所有依赖项,并将其复制到文件夹中。

我在做错什么吗? 请注意,我是这一切的新手。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

@Mojo(name = "xxx", defaultPhase = LifecyclePhase.xxx, requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME)

相关问题