【问题标题】:How get dependencies gradle Java如何获取依赖项 gradle Java
【发布时间】:2016-07-20 15:40:12
【问题描述】:

如何使用 Java 获取当前项目的依赖项? 我在 Java 类中尝试此代码,但结果为空:

class Example implements Plugin<Project> {
    void apply(Project project) {
             project.getConfigurations().getByName("runtime").getAllDependencies();        
        }
    }

感谢您的回答 JBirdVegas 。我尝试在 Java 上编写您的示例:

List<String> deps = new ArrayList<>();
        Configuration configuration = project.getConfigurations().getByName("compile");
        for (File file : configuration) {
            deps.add(file.toString());
        }

但有错误:

Cannot change dependencies of configuration ':compile' after it has been resolved.

当运行 gradle build 时

【问题讨论】:

  • 我把 apply plugin: Example 放在 dependencies {...} 块之后,它起作用了

标签: java gradle gradle-plugin


【解决方案1】:

您只是缺少一个迭代找到的依赖项的步骤

时髦的:

class Example implements Plugin<Project> {
    void apply(Project project) {
        def configuration = project.configurations.getByName('compile')
        configuration.each { File file ->
            println "Found project dependency @ $file.absolutePath"
        }     
    }
}

Java 8:

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;

public class Example implements Plugin<Project> {
    @Override
    public void apply(Project project) {
        Configuration configuration = project.getConfigurations().getByName("compile");
        configuration.forEach(file -> {
            project.getLogger().lifecycle("Found project dependency @ " + file.getAbsolutePath());
        });
    }
}

Java 7:

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;

import java.io.File;

public class Example implements Plugin<Project> {
    @Override
    public void apply(Project project) {
        Configuration configuration = project.getConfigurations().getByName("compile");
        for (File file : configuration) {
            project.getLogger().lifecycle("Found project dependency @ " + file.getAbsolutePath());
        }
    }
}

【讨论】:

  • 我在我的问题正文中用示例代码写了答案))
  • @dmitryZaskovich 您无需将答案代码添加到您的问题中。而是选择正确的答案。
  • 回答代码示例在 java 上使用时出错(我的 java 实现错误?
  • 如果我使用 groovy,我认为您的代码可以正常工作。但是如何在 java 上写呢?
  • @dmitryZaskovich 我添加了相同逻辑的 Java 7 和 Java 8 示例
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
  • 2017-09-07
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2018-06-19
相关资源
最近更新 更多