Есть ли у нас возможность прочитать содержимое файла build.gradle в java-программе.Я смог сделать что-то подобное в Maven, используя приведенный ниже код.Теперь я смотрю на варианты сделать то же самое в Gradle.Я попытался использовать Gradle-tooling-api, как описано ниже, но получил некоторые ошибки (не уверен, что я придерживаюсь правильного подхода).
чтение pom.xml с использованием MavenXpp3Reader
```FileReader fileReader;
try {
fileReader = new FileReader(destPath);
} catch (FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
MavenXpp3Reader reader = new MavenXpp3Reader();
Model pomModel = reader.read(fileReader);
//close the file reader
fileReader.close();
```
Пытался использовать gradle-tooling-api, как показано ниже, но получил приведенную ниже ошибку.
public class ToolingApiCustomModelPlugin implements Plugin<Project> {
private final ToolingModelBuilderRegistry registry;
@Inject
public ToolingApiCustomModelPlugin(ToolingModelBuilderRegistry registry) {
this.registry = registry;
}
@Override
public void apply(Project project) {
registry.register(new CustomToolingModelBuilder());
}
private static class CustomToolingModelBuilder implements ToolingModelBuilder {
@Override
public boolean canBuild(String modelName) {
return modelName.equals(CustomModel.class.getName());
}
@Override
public Object buildAll(String modelName, Project project) {
List<String> pluginClassNames = new ArrayList<String>();
for(Plugin plugin : project.getPlugins()) {
pluginClassNames.add(plugin.getClass().getName());
}
return new DefaultModel(pluginClassNames);
}
}
}
public static void main(String[] args) {
GradleConnector connector = GradleConnector.newConnector();
connector.forProjectDirectory(new File("./sample"));
ProjectConnection connection = null;
try {
connection = connector.connect();
ModelBuilder<CustomModel> customModelBuilder = connection.model(CustomModel.class);
//customModelBuilder.withArguments("--init-script", "init.gradle");
CustomModel model = customModelBuilder.get();
}
Исключение в потоке "main" org.gradle.tooling.UnknownModelException: модель типа 'CustomModel' недоступна вэта сборка.
Вызывается: org.gradle.tooling.provider.model.UnknownModelException: нет доступных сборщиков для построения модели типа 'org.gradle.sample.toolingapi.CustomModel'.