14
14
import org .gradle .api .NamedDomainObjectContainer ;
15
15
import org .gradle .api .Plugin ;
16
16
import org .gradle .api .Project ;
17
+ import org .gradle .api .artifacts .Configuration ;
17
18
import org .gradle .api .artifacts .dsl .DependencyHandler ;
18
19
import org .gradle .api .artifacts .repositories .IvyArtifactRepository ;
19
20
import org .gradle .api .artifacts .type .ArtifactTypeDefinition ;
@@ -53,6 +54,8 @@ public class DistributionDownloadPlugin implements Plugin<Project> {
53
54
54
55
private Property <Boolean > dockerAvailability ;
55
56
57
+ private boolean writingDependencies = false ;
58
+
56
59
@ Inject
57
60
public DistributionDownloadPlugin (ObjectFactory objectFactory ) {
58
61
this .objectFactory = objectFactory ;
@@ -65,6 +68,7 @@ public void setDockerAvailability(Provider<Boolean> dockerAvailability) {
65
68
66
69
@ Override
67
70
public void apply (Project project ) {
71
+ writingDependencies = project .getGradle ().getStartParameter ().getWriteDependencyVerifications ().isEmpty () == false ;
68
72
project .getDependencies ().registerTransform (UnzipTransform .class , transformSpec -> {
69
73
transformSpec .getFrom ().attribute (ArtifactTypeDefinition .ARTIFACT_TYPE_ATTRIBUTE , ArtifactTypeDefinition .ZIP_TYPE );
70
74
transformSpec .getTo ().attribute (ArtifactTypeDefinition .ARTIFACT_TYPE_ATTRIBUTE , ArtifactTypeDefinition .DIRECTORY_TYPE );
@@ -87,7 +91,6 @@ private void setupDistributionContainer(Project project) {
87
91
var extractedConfiguration = project .getConfigurations ().create (DISTRO_EXTRACTED_CONFIG_PREFIX + name );
88
92
extractedConfiguration .getAttributes ()
89
93
.attribute (ArtifactTypeDefinition .ARTIFACT_TYPE_ATTRIBUTE , ArtifactTypeDefinition .DIRECTORY_TYPE );
90
-
91
94
var distribution = new ElasticsearchDistribution (
92
95
name ,
93
96
objectFactory ,
@@ -96,16 +99,20 @@ private void setupDistributionContainer(Project project) {
96
99
objectFactory .fileCollection ().from (extractedConfiguration )
97
100
);
98
101
99
- registerDistributionDependencies (project , distribution );
102
+ // when running with --write-dependency-verification to update dependency verification data,
103
+ // we do not register the dependencies as we ignore elasticsearch internal dependencies anyhow and
104
+ // want to reduce general resolution time
105
+ if (writingDependencies == false ) {
106
+ registerDistributionDependencies (project , distribution );
107
+ }
100
108
return distribution ;
101
109
});
102
110
project .getExtensions ().add (CONTAINER_NAME , distributionsContainer );
103
111
}
104
112
105
113
private void registerDistributionDependencies (Project project , ElasticsearchDistribution distribution ) {
106
- project .getConfigurations ()
107
- .getByName (DISTRO_CONFIG_PREFIX + distribution .getName ())
108
- .getDependencies ()
114
+ Configuration distroConfig = project .getConfigurations ().getByName (DISTRO_CONFIG_PREFIX + distribution .getName ());
115
+ distroConfig .getDependencies ()
109
116
.addLater (
110
117
project .provider (() -> distribution .maybeFreeze ())
111
118
.map (
@@ -114,9 +121,9 @@ private void registerDistributionDependencies(Project project, ElasticsearchDist
114
121
)
115
122
);
116
123
117
- project .getConfigurations ()
118
- .getByName (DISTRO_EXTRACTED_CONFIG_PREFIX + distribution .getName ())
119
- .getDependencies ()
124
+ Configuration extractedDistroConfig = project .getConfigurations ()
125
+ .getByName (DISTRO_EXTRACTED_CONFIG_PREFIX + distribution .getName ());
126
+ extractedDistroConfig .getDependencies ()
120
127
.addAllLater (
121
128
project .provider (() -> distribution .maybeFreeze ())
122
129
.map (
0 commit comments