in java/src/com/google/idea/blaze/java/sync/importer/BlazeJavaWorkspaceImporter.java [252:335]
private void addTargetAsSource(
WorkspaceBuilder workspaceBuilder,
TargetIdeInfo target,
Collection<ArtifactLocation> javaSources) {
JavaIdeInfo javaIdeInfo = target.getJavaIdeInfo();
if (javaIdeInfo == null) {
return;
}
TargetKey targetKey = target.getKey();
Collection<String> jars = jdepsMap.getDependenciesForTarget(targetKey);
if (jars != null) {
workspaceBuilder.jdeps.addAll(jars);
}
// Add all deps if this target is in the current working set
if (workingSet == null || workingSet.isTargetInWorkingSet(target)) {
// Add self, so we pick up our own gen jars if in working set
workspaceBuilder.directDeps.add(targetKey);
for (Dependency dep : target.getDependencies()) {
if (dep.getDependencyType() != DependencyType.COMPILE_TIME) {
continue;
}
// forward deps from java proto_library aspect targets
TargetIdeInfo depTarget = targetMap.get(dep.getTargetKey());
if (depTarget != null
&& JavaBlazeRules.getJavaProtoLibraryKinds().contains(depTarget.getKind())) {
workspaceBuilder.directDeps.addAll(
depTarget.getDependencies().stream().map(Dependency::getTargetKey).collect(toList()));
} else {
workspaceBuilder.directDeps.add(dep.getTargetKey());
}
}
}
for (ArtifactLocation artifactLocation : javaSources) {
if (artifactLocation.isSource()) {
duplicateSourceDetector.add(targetKey, artifactLocation);
workspaceBuilder.sourceArtifacts.add(new SourceArtifact(targetKey, artifactLocation));
workspaceBuilder.addedSourceFiles.add(artifactLocation);
}
}
ArtifactLocation manifest = javaIdeInfo.getPackageManifest();
if (manifest != null) {
workspaceBuilder.javaPackageManifests.put(targetKey, manifest);
}
for (LibraryArtifact libraryArtifact : javaIdeInfo.getJars()) {
ArtifactLocation classJar = libraryArtifact.getClassJar();
if (classJar != null) {
workspaceBuilder.buildOutputJars.add(classJar);
}
}
if (augmenters.stream().allMatch(argument -> argument.shouldAttachGenJar(target))) {
workspaceBuilder.generatedJarsFromSourceTargets.addAll(
javaIdeInfo.getGeneratedJars().stream()
.map(jar -> new BlazeJarLibrary(jar, targetKey))
.collect(toList()));
}
if (javaIdeInfo.getFilteredGenJar() != null) {
workspaceBuilder.generatedJarsFromSourceTargets.add(
new BlazeJarLibrary(javaIdeInfo.getFilteredGenJar(), targetKey));
}
if (JavaSourceFilter.isJavaProtoTarget(target)) {
// add generated jars from all proto library targets in the project
javaIdeInfo.getJars().stream()
.map(jar -> new BlazeJarLibrary(jar, targetKey))
.forEach(workspaceBuilder.generatedJarsFromSourceTargets::add);
}
for (BlazeJavaSyncAugmenter augmenter : augmenters) {
augmenter.addJarsForSourceTarget(
workspaceLanguageSettings,
projectViewSet,
target,
workspaceBuilder.outputJarsFromSourceTargets.get(targetKey),
workspaceBuilder.generatedJarsFromSourceTargets);
}
workspaceBuilder.pluginProcessorJars.addAll(
javaIdeInfo.getPluginProcessorJars().stream()
.map(jar -> new BlazeJarLibrary(jar, target.getKey()))
.collect(toImmutableList()));
}