0

我正在使用 gradle 工具并使用projectConnection我能够从 java 连接到 gradle。通过使用ModelBuilder我也可以在我的 java 类中获取项目对象。

ModelBuilder gradleBuilder = connection.model(GradleProject.class); 

但是这个project对象只能访问任务。(即)project.getTasks()可用。但不是project.getExtensions()。如何访问这些扩展?有没有其他方法可以Extensions从 Java 访问 gradle?

回复后编辑:

当我运行一个 gradle 任务时,它将读取给定文件中的闭包并更新在静态 java 类 ( deployGradleReaderExtension.java) 中读取的值。现在我正在尝试从扩展中读取值

deployGradleReaderExtension ext = (deployGradleReaderExtension) buildResult.getGradle().getRootProject().getExtensions().getByName("serviceConf");

现在我得到了铸造异常。因为 gradle 和 java 正在使用 diff ClassLoaders

有什么办法可以克服这个吗?

4

1 回答 1

0

例如,可以从用 Java 编写的插件访问扩展,但不能从工具 API 访问。为了实现强大的向前和向后兼容性,工具 API 仅提供 Gradle 对象模型的简化视图,旨在满足 IDE 等集成商的需求。

于 2012-10-13T10:57:39.273 回答