use of org.gradle.internal.service.scopes.BuildTreeScopeServices in project gradle by gradle.
the class DefaultGradleLauncherFactory method newInstance.
@Override
public GradleLauncher newInstance(StartParameter startParameter, BuildRequestContext requestContext, ServiceRegistry parentRegistry) {
// This should only be used for top-level builds
if (rootBuild != null) {
throw new IllegalStateException("Cannot have a current build");
}
if (!(parentRegistry instanceof BuildTreeScopeServices)) {
throw new IllegalArgumentException("Service registry must be of build-tree scope");
}
BuildTreeScopeServices buildTreeScopeServices = (BuildTreeScopeServices) parentRegistry;
// TODO: Push this up more so we can inject plugins into the root build as well.
BuildDefinition buildDefinition = BuildDefinition.fromStartParameter(startParameter);
DefaultGradleLauncher launcher = doNewInstance(buildDefinition, null, requestContext.getCancellationToken(), requestContext, requestContext.getEventConsumer(), buildTreeScopeServices, ImmutableList.of(new Stoppable() {
@Override
public void stop() {
rootBuild = null;
}
}));
rootBuild = launcher;
final DefaultDeploymentRegistry deploymentRegistry = parentRegistry.get(DefaultDeploymentRegistry.class);
launcher.getGradle().addBuildListener(new BuildAdapter() {
@Override
public void buildFinished(BuildResult result) {
deploymentRegistry.buildFinished(result);
}
});
return launcher;
}
Aggregations