【问题标题】:Maven3 : How to get all the project dependencies in a Custom Maven ExtensionMaven3:如何在自定义 Maven 扩展中获取所有项目依赖项
【发布时间】:2019-01-24 02:23:55
【问题描述】:

在 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 多个依赖项已复制到目标文件夹。

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

我做错了什么吗? 请注意,我对这一切都不熟悉。非常感谢任何帮助。

【问题讨论】:

  • getDependencies() 方法可能只返回直接依赖项而不是传递依赖项。为什么要重新发明轮子而不只是使用依赖项插件?
  • 是的,阅读它 getDependencies() 只返回直接。我不想重新发明,我可以重用插件,但是我如何使用依赖插件来获取我的扩展类中的所有依赖项?
  • 如果你想在课堂上使用它,我猜getArtifacts() 就是你想要的(因为它也返回传递依赖)。如果将工件复制到文件夹是您想要实现的目标,我仍然不明白您为什么不使用依赖插件来做到这一点。
  • 我试过这个: session.getCurrentProject().getArtifacts() 我看到集合的大小是 0 。我不确定为什么会这样。那么我想做的是,当创建一个构建作业时,我想在后台获取所有依赖项。我不能做 "mvn dependency:copy-dependencies" ,我想把它作为 Maven 扩展的一部分。这个可以吗?
  • @DrHopfen 对此有什么想法吗?如何在我的自定义 Maven 扩展中使用依赖插件?非常感谢您的帮助

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


【解决方案1】:

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

【讨论】:

  • 请注意:requiresDependencyResolution 和 requiresDependencyCollection.
猜你喜欢
  • 2011-09-01
  • 2013-03-01
  • 2012-09-22
  • 1970-01-01
  • 2018-12-06
  • 2012-03-30
  • 1970-01-01
  • 2018-07-20
  • 2013-02-12
相关资源
最近更新 更多