mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
collect configuration files only once during deps resolution
This commit is contained in:
+22
-6
@@ -9,6 +9,9 @@ import org.jetbrains.plugins.gradle.model.ExternalDependency;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class CompileDependenciesProvider {
|
||||
public static final String SCOPE = "COMPILE";
|
||||
@@ -21,26 +24,39 @@ public class CompileDependenciesProvider {
|
||||
private Configuration myCompileOnlyConfiguration;
|
||||
private Collection<ExternalDependency> myDependencies;
|
||||
private Collection<File> myFiles;
|
||||
private final Map<Configuration, Set<File>> myConfigurationFilesCache = new HashMap<Configuration, Set<File>>();
|
||||
|
||||
public CompileDependenciesProvider(SourceSet sourceSet, Project project) {
|
||||
mySourceSet = sourceSet;
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
public Configuration getDeprecatedCompileConfiguration() {
|
||||
return myConfiguration;
|
||||
public Set<File> getDeprecatedCompileConfigurationFiles() {
|
||||
return getFilesFromCache(myConfiguration);
|
||||
}
|
||||
|
||||
public Configuration getCompileClasspathConfiguration() {
|
||||
return myCompileClasspathConfiguration;
|
||||
}
|
||||
|
||||
public Configuration getCompileConfiguration() {
|
||||
return myCompileConfiguration;
|
||||
public Set<File> getCompileConfigurationFiles() {
|
||||
return getFilesFromCache(myCompileConfiguration);
|
||||
}
|
||||
|
||||
public Configuration getCompileOnlyConfiguration() {
|
||||
return myCompileOnlyConfiguration;
|
||||
public Set<File> getCompileOnlyConfigurationFiles() {
|
||||
return getFilesFromCache(myCompileOnlyConfiguration);
|
||||
}
|
||||
|
||||
private Set<File> getFilesFromCache(Configuration key) {
|
||||
if (key == null) {
|
||||
return null;
|
||||
}
|
||||
Set<File> cached = myConfigurationFilesCache.get(key);
|
||||
if (cached == null) {
|
||||
cached = key.getFiles();
|
||||
myConfigurationFilesCache.put(key, cached);
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
public Collection<ExternalDependency> getDependencies() {
|
||||
|
||||
+9
-7
@@ -476,25 +476,27 @@ public class DependencyResolverImpl implements DependencyResolver {
|
||||
@NotNull final RuntimeDependenciesProvider runtimeDependenciesProvider,
|
||||
@NotNull final AbstractExternalDependency dep) {
|
||||
Collection<File> resolvedFiles = getFiles(dep);
|
||||
Configuration compileOnlyConfiguration = compileDependenciesProvider.getCompileOnlyConfiguration();
|
||||
Configuration deprecatedCompileConfiguration = compileDependenciesProvider.getDeprecatedCompileConfiguration();
|
||||
Configuration compileConfiguration = compileDependenciesProvider.getCompileConfiguration();
|
||||
|
||||
boolean checkCompileOnlyDeps = compileDependenciesProvider.getCompileClasspathConfiguration() != null;
|
||||
final Set<File> compileConfigurationFiles = compileDependenciesProvider.getCompileConfigurationFiles();
|
||||
final Set<File> compileOnlyConfigurationFiles = compileDependenciesProvider.getCompileOnlyConfigurationFiles();
|
||||
final Set<File> deprecatedCompileConfigurationFiles = compileDependenciesProvider.getDeprecatedCompileConfigurationFiles();
|
||||
|
||||
final Set<File> runtimeConfigurationFiles = runtimeDependenciesProvider.getConfigurationFiles();
|
||||
// since version 3.4 compileOnly no longer extends compile
|
||||
// so, we can use compileOnly configuration for the check
|
||||
if (isJavaLibraryPluginSupported) {
|
||||
if (compileOnlyConfiguration != null && containsAll(compileOnlyConfiguration, resolvedFiles)) {
|
||||
if (compileOnlyConfigurationFiles != null && compileOnlyConfigurationFiles.containsAll(resolvedFiles)) {
|
||||
// deprecated 'compile' configuration still can be used
|
||||
if (deprecatedCompileConfiguration == null || !containsAll(deprecatedCompileConfiguration, resolvedFiles)) {
|
||||
if (deprecatedCompileConfigurationFiles == null || !deprecatedCompileConfigurationFiles.containsAll(resolvedFiles)) {
|
||||
dep.setScope(PROVIDED_SCOPE);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (checkCompileOnlyDeps
|
||||
&& !containsAll(compileConfiguration, resolvedFiles)
|
||||
&& !containsAll(runtimeDependenciesProvider.getConfiguration(), resolvedFiles)) {
|
||||
&& !compileConfigurationFiles.containsAll(resolvedFiles)
|
||||
&& !runtimeConfigurationFiles.containsAll(resolvedFiles)) {
|
||||
dep.setScope(PROVIDED_SCOPE);
|
||||
}
|
||||
}
|
||||
|
||||
+9
@@ -7,6 +7,7 @@ import org.jetbrains.plugins.gradle.model.ExternalDependency;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
|
||||
public class RuntimeDependenciesProvider {
|
||||
public static final String SCOPE = "RUNTIME";
|
||||
@@ -16,6 +17,7 @@ public class RuntimeDependenciesProvider {
|
||||
private Configuration myConfiguration;
|
||||
private Collection<ExternalDependency> myDependencies;
|
||||
private Collection<File> myFiles;
|
||||
private Set<File> myConfigurationFiles = null;
|
||||
|
||||
public RuntimeDependenciesProvider(SourceSet sourceSet,
|
||||
Project project) {
|
||||
@@ -27,6 +29,13 @@ public class RuntimeDependenciesProvider {
|
||||
return myConfiguration;
|
||||
}
|
||||
|
||||
public Set<File> getConfigurationFiles() {
|
||||
if (myConfigurationFiles == null) {
|
||||
myConfigurationFiles = myConfiguration.getFiles();
|
||||
}
|
||||
return myConfigurationFiles;
|
||||
}
|
||||
|
||||
public Collection<ExternalDependency> getDependencies() {
|
||||
return myDependencies;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user