public static Set<Artifact> getArtifactsToBuild( final Project project, final CompileScope compileScope, final boolean addIncludedArtifactsWithOutputPathsOnly) { final Artifact[] artifactsFromScope = getArtifacts(compileScope); final ArtifactManager artifactManager = ArtifactManager.getInstance(project); PackagingElementResolvingContext context = artifactManager.getResolvingContext(); if (artifactsFromScope != null) { return addIncludedArtifacts( Arrays.asList(artifactsFromScope), context, addIncludedArtifactsWithOutputPathsOnly); } final Set<Artifact> cached = compileScope.getUserData(CACHED_ARTIFACTS_KEY); if (cached != null) { return cached; } Set<Artifact> artifacts = new HashSet<Artifact>(); final Set<Module> modules = new HashSet<Module>(Arrays.asList(compileScope.getAffectedModules())); final List<Module> allModules = Arrays.asList(ModuleManager.getInstance(project).getModules()); for (Artifact artifact : artifactManager.getArtifacts()) { if (artifact.isBuildOnMake()) { if (modules.containsAll(allModules) || containsModuleOutput(artifact, modules, context)) { artifacts.add(artifact); } } } Set<Artifact> result = addIncludedArtifacts(artifacts, context, addIncludedArtifactsWithOutputPathsOnly); compileScope.putUserData(CACHED_ARTIFACTS_KEY, result); return result; }
@Override public ArtifactManagerState getState() { final ArtifactManagerState state = new ArtifactManagerState(); for (Artifact artifact : getAllArtifactsIncludingInvalid()) { final ArtifactState artifactState; if (artifact instanceof InvalidArtifact) { artifactState = ((InvalidArtifact) artifact).getState(); } else { artifactState = new ArtifactState(); artifactState.setBuildOnMake(artifact.isBuildOnMake()); artifactState.setName(artifact.getName()); artifactState.setOutputPath(artifact.getOutputPath()); artifactState.setRootElement(serializePackagingElement(artifact.getRootElement())); artifactState.setArtifactType(artifact.getArtifactType().getId()); for (ArtifactPropertiesProvider provider : artifact.getPropertiesProviders()) { final ArtifactPropertiesState propertiesState = serializeProperties(provider, artifact.getProperties(provider)); if (propertiesState != null) { artifactState.getPropertiesList().add(propertiesState); } } Collections.sort( artifactState.getPropertiesList(), new Comparator<ArtifactPropertiesState>() { @Override public int compare( @NotNull ArtifactPropertiesState o1, @NotNull ArtifactPropertiesState o2) { return o1.getId().compareTo(o2.getId()); } }); } state.getArtifacts().add(artifactState); } return state; }