private void runTask(final ProjectConnection connection, final Path path, final String task) { synchronized (LOCK) { Map<String, String> xml = new HashMap<>(); try { // clean jaxp XML_PROPS.forEach(p -> xml.put(p, (String) System.getProperties().remove(p))); try { connection.newBuild() .setStandardError(System.err) .setStandardOutput(System.out) .forTasks(task) .run(); } catch (Exception ex) { getLogger().debug("Execution of " + task + " resulted in exception", ex); } } finally { // restore jaxp xml.forEach((k, v) -> { if (v != null) { System.setProperty(k, v); } }); } } }
@Override public NbProjectInfo execute(BuildController bc) { return bc.getModel(NbProjectInfo.class); } }
getLogger().info("watching directories {}", Arrays.asList(watchDirs)); connection = GradleConnector.newConnector() .useInstallation(project.getGradle().getGradleHomeDir()) .forProjectDirectory(project.getRootDir()) .connect(); .onComplete(() -> connection.close()) .throwException())); watcher.start();
public NbProjectInfo loadInfo(File project, String... extraArgs) { NbProjectInfo ret = null; GradleConnector gconn = GradleConnector.newConnector(); ProjectConnection pconn = gconn.forProjectDirectory(project).connect(); BuildActionExecuter<NbProjectInfo> action = pconn.action(new NbProjectInfoAction()); action.setJvmArguments( "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006", "-DNETBEANS_TOOLING_JAR=" + buildDir + "/libs/netbeans-gradle-tooling.jar" ); ArrayList<String> args = new ArrayList<>(); args.add("-I"); args.add(buildDir + "/resources/main/nb-tooling.gradle"); args.addAll(Arrays.asList(extraArgs)); action.withArguments(args.toArray(new String[args.size()])); try { ret = action.run(); } catch (GradleConnectionException | IllegalStateException ex) { System.err.println("Failed to retrieve project information for: " + project); ex.printStackTrace(); } finally { try { pconn.close(); } catch (NullPointerException ex) { } } return ret; }
@Override public Void execute(File projectDirectory, ProjectConnection connection) { connection.newBuild() .forTasks("doNothing") .withArguments("--refresh-dependencies") .run(); return null; } });
@Override public void close() { this.delegate.close(); } }
@Override public void apply(GradleConnector connector) { connector.useInstallation(this.location); }
@Override public Builder action() { // TODO (donat) use cache for this method too return this.delegate.action(); }
public void forwardResults(ResultHandler<? super T> handler) { if (this.failure == null) { handler.onComplete(this.result); } else { handler.onFailure(this.failure); } } }
@Override public void onComplete(Object result) { try { handler.onComplete(result); } finally { closeConnection(); } }
@Override public void onFailure(GradleConnectionException e) { try { handler.onFailure(e); } finally { closeConnection(); } } });
@Override public <T> Builder projectsLoaded(BuildAction<T> buildAction, IntermediateResultHandler<? super T> handler) throws IllegalArgumentException { this.action.projectsLoaded(buildAction, handler); return this; }
@Override public <T> Builder buildFinished(BuildAction<T> buildAction, IntermediateResultHandler<? super T> handler) throws IllegalArgumentException { this.action.buildFinished(buildAction, handler); return this; }
@Override public BuildActionExecuter<Void> build() { return configureOperation(this.action.build()); } }
@Override public CachingBuildActionExecuter<T> withCancellationToken(CancellationToken cancellationToken) { this.delegate.withCancellationToken(cancellationToken); return this; }
@Override public <T> T findModel(Class<T> modelClass) { return controller.findModel(referenceProject, modelClass); } };