我正在构建一个从其他gradle项目中检索依赖项列表的maven项目。 (使用Java而不是mvn控制台)
我想使用Gradle API中的getDependencies()函数,如下所示。
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.dsl.DependencyHandler;
DependencyHandler dependencies = project.getDependencies();
但是看来Gradle API只能在Gradle构建环境中使用。
我在pom.xml中添加了gradle-core,如下所示,但它似乎没有我需要撤消依赖项的api
<dependency>
<groupId>org.gradle</groupId>
<artifactId>gradle-core</artifactId>
<version>2.2.1</version>
</dependency>
是否可以在Maven构建环境中使用Gradle API?
答案 0 :(得分:0)
从技术上讲,它可能是可能的,因为Gradle的核心只是Java。但是,您需要构造Gradle项目,构造子项目,调用各种生命周期方法,以及Gradle要做的许多其他事情才能正确创建Project
实例。
话虽如此,仅通过ProcessBuilder
通过命令调用Gradle来获取dependencies
任务的依赖项列表是非常容易的。像这样:
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("gradlew", "dependencies");
Process process = processBuilder.start();
try (var reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
while ((line = reader.readLine()) != null) {
// Do something with the output
}
}
如果您可以访问Gradle项目,那么创建一个custom Gradle task可以大大简化所有工作,而https://premiere-scripting-guide.readthedocs.io/4%20-%20Project%20Item%20object/projectItem.html?highlight=mediaType可以创建一个文件(JSON或所需的任何格式),包含所有依赖项以及所需的任何其他内容。这样,您可以使用上面的示例来调用自定义任务,然后在Maven中以易于阅读的格式使用文件。