use of org.gradle.tooling.model.DomainObjectSet in project meghanada-server by mopemope.
the class GradleProject method parseProject.
@Override
public Project parseProject() throws ProjectParseException {
final ProjectConnection connection = getProjectConnection();
log.info("loading gradle project:{}", new File(this.projectRoot, Project.GRADLE_PROJECT_FILE));
try {
BuildEnvironment env = connection.getModel(BuildEnvironment.class);
String version = env.getGradle().getGradleVersion();
if (isNull(version)) {
version = GradleVersion.current().getVersion();
}
if (nonNull(version)) {
this.gradleVersion = new ComparableVersion(version);
}
final IdeaProject ideaProject = debugTimeItF("get idea project model elapsed={}", () -> connection.getModel(IdeaProject.class));
this.setCompileTarget(ideaProject);
log.trace("load root project path:{}", this.rootProject);
final DomainObjectSet<? extends IdeaModule> modules = ideaProject.getModules();
final List<? extends IdeaModule> mainModules = modules.parallelStream().filter(ideaModule -> {
final org.gradle.tooling.model.GradleProject gradleProject = ideaModule.getGradleProject();
final File moduleProjectRoot = gradleProject.getProjectDirectory();
final String name = ideaModule.getName();
log.trace("find sub-module name {} path {} ", name, moduleProjectRoot);
this.allModules.putIfAbsent(name, moduleProjectRoot);
return moduleProjectRoot.equals(this.getProjectRoot());
}).collect(Collectors.toList());
mainModules.forEach(wrapIOConsumer(this::parseIdeaModule));
// set default output
if (isNull(super.output)) {
String build = Joiner.on(File.separator).join(this.projectRoot, "build", "classes", "main");
if (nonNull(gradleVersion) && gradleVersion.compareTo(new ComparableVersion("4.0")) >= 0) {
build = Joiner.on(File.separator).join(this.projectRoot, "build", "classes", "java", "main");
}
super.output = this.normalize(build);
}
if (isNull(super.testOutput)) {
String build = Joiner.on(File.separator).join(this.projectRoot, "build", "classes", "test");
if (nonNull(gradleVersion) && gradleVersion.compareTo(new ComparableVersion("4.0")) >= 0) {
build = Joiner.on(File.separator).join(this.projectRoot, "build", "classes", "java", "test");
}
super.testOutput = this.normalize(build);
}
return this;
} catch (Exception e) {
throw new ProjectParseException(e);
} finally {
connection.close();
}
}
Aggregations