Browse Source

Fix resolveAllDependencies broken by ArtfactTransforms (#61972)

- ignore es extracted configuration for resolveAllDeps
- fixes #61945
Rene Groeschke 5 years ago
parent
commit
eda35d0d9f

+ 2 - 6
build.gradle

@@ -428,15 +428,11 @@ gradle.projectsEvaluated {
 }
 
 allprojects {
-  tasks.register('resolveAllDependencies') {
+  tasks.register('resolveAllDependencies', org.elasticsearch.gradle.ResolveAllDependencies) {
+    configs = project.configurations
     if (project.path.contains("fixture")) {
       dependsOn tasks.withType(ComposePull)
     }
-    doLast {
-      configurations.findAll { it.isCanBeResolved() &&
-        ((it instanceof org.gradle.internal.deprecation.DeprecatableConfiguration) && it.canSafelyBeResolved())
-      }.each { it.resolve() }
-    }
   }
 
   // helper task to print direct dependencies of a single task

+ 52 - 0
buildSrc/src/main/groovy/org/elasticsearch/gradle/ResolveAllDependencies.java

@@ -0,0 +1,52 @@
+/*
+ * Licensed to Elasticsearch under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.elasticsearch.gradle;
+
+import org.gradle.api.DefaultTask;
+import org.gradle.api.artifacts.Configuration;
+import org.gradle.api.tasks.TaskAction;
+import org.gradle.internal.deprecation.DeprecatableConfiguration;
+
+import java.util.Collection;
+
+import static org.elasticsearch.gradle.DistributionDownloadPlugin.DISTRO_EXTRACTED_CONFIG_PREFIX;
+
+public class ResolveAllDependencies extends DefaultTask {
+
+    Collection<Configuration> configs;
+
+    @TaskAction
+    void resolveAll() {
+        configs.stream().filter(it -> canBeResolved(it)).forEach(it -> it.resolve());
+    }
+
+    static boolean canBeResolved(Configuration configuration) {
+        if (configuration.isCanBeResolved() == false) {
+            return false;
+        }
+        if (configuration instanceof org.gradle.internal.deprecation.DeprecatableConfiguration) {
+            var deprecatableConfiguration = (DeprecatableConfiguration) configuration;
+            if (deprecatableConfiguration.canSafelyBeResolved() == false) {
+                return false;
+            }
+        }
+        return configuration.getName().startsWith(DISTRO_EXTRACTED_CONFIG_PREFIX) == false;
+    }
+}

+ 2 - 1
buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java

@@ -56,6 +56,7 @@ public class DistributionDownloadPlugin implements Plugin<Project> {
     private static final String FAKE_SNAPSHOT_IVY_GROUP = "elasticsearch-distribution-snapshot";
     private static final String DOWNLOAD_REPO_NAME = "elasticsearch-downloads";
     private static final String SNAPSHOT_REPO_NAME = "elasticsearch-snapshots";
+    public static final String DISTRO_EXTRACTED_CONFIG_PREFIX = "es_distro_extracted_";
 
     private NamedDomainObjectContainer<ElasticsearchDistribution> distributionsContainer;
     private NamedDomainObjectContainer<DistributionResolution> distributionsResolutionStrategiesContainer;
@@ -88,7 +89,7 @@ public class DistributionDownloadPlugin implements Plugin<Project> {
     private void setupDistributionContainer(Project project, Provider<DockerSupportService> dockerSupport) {
         distributionsContainer = project.container(ElasticsearchDistribution.class, name -> {
             Configuration fileConfiguration = project.getConfigurations().create("es_distro_file_" + name);
-            Configuration extractedConfiguration = project.getConfigurations().create("es_distro_extracted_" + name);
+            Configuration extractedConfiguration = project.getConfigurations().create(DISTRO_EXTRACTED_CONFIG_PREFIX + name);
             extractedConfiguration.getAttributes().attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE);
             return new ElasticsearchDistribution(name, project.getObjects(), dockerSupport, fileConfiguration, extractedConfiguration);
         });