1

在 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' 上运行 mvn dependency:copy-dependencies 时,我看到 200 多个依赖项复制到目标文件夹。

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

有什么我做错了吗?请注意,我对这一切都不熟悉。任何帮助是极大的赞赏。

4

1 回答 1

0

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

于 2021-05-25T07:01:45.337 回答