mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-06-28 09:28:55 -04:00
Make --write-verification-metadata faster (#111103)
by ignoring elasticsearch distributions when resolving artifacts
This commit is contained in:
parent
fcc5b737ea
commit
022b84b41d
1 changed files with 15 additions and 8 deletions
|
@ -14,6 +14,7 @@ import org.elasticsearch.gradle.transform.UnzipTransform;
|
||||||
import org.gradle.api.NamedDomainObjectContainer;
|
import org.gradle.api.NamedDomainObjectContainer;
|
||||||
import org.gradle.api.Plugin;
|
import org.gradle.api.Plugin;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
|
import org.gradle.api.artifacts.Configuration;
|
||||||
import org.gradle.api.artifacts.dsl.DependencyHandler;
|
import org.gradle.api.artifacts.dsl.DependencyHandler;
|
||||||
import org.gradle.api.artifacts.repositories.IvyArtifactRepository;
|
import org.gradle.api.artifacts.repositories.IvyArtifactRepository;
|
||||||
import org.gradle.api.artifacts.type.ArtifactTypeDefinition;
|
import org.gradle.api.artifacts.type.ArtifactTypeDefinition;
|
||||||
|
@ -53,6 +54,8 @@ public class DistributionDownloadPlugin implements Plugin<Project> {
|
||||||
|
|
||||||
private Property<Boolean> dockerAvailability;
|
private Property<Boolean> dockerAvailability;
|
||||||
|
|
||||||
|
private boolean writingDependencies = false;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public DistributionDownloadPlugin(ObjectFactory objectFactory) {
|
public DistributionDownloadPlugin(ObjectFactory objectFactory) {
|
||||||
this.objectFactory = objectFactory;
|
this.objectFactory = objectFactory;
|
||||||
|
@ -65,6 +68,7 @@ public class DistributionDownloadPlugin implements Plugin<Project> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(Project project) {
|
public void apply(Project project) {
|
||||||
|
writingDependencies = project.getGradle().getStartParameter().getWriteDependencyVerifications().isEmpty() == false;
|
||||||
project.getDependencies().registerTransform(UnzipTransform.class, transformSpec -> {
|
project.getDependencies().registerTransform(UnzipTransform.class, transformSpec -> {
|
||||||
transformSpec.getFrom().attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.ZIP_TYPE);
|
transformSpec.getFrom().attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.ZIP_TYPE);
|
||||||
transformSpec.getTo().attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.DIRECTORY_TYPE);
|
transformSpec.getTo().attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.DIRECTORY_TYPE);
|
||||||
|
@ -87,7 +91,6 @@ public class DistributionDownloadPlugin implements Plugin<Project> {
|
||||||
var extractedConfiguration = project.getConfigurations().create(DISTRO_EXTRACTED_CONFIG_PREFIX + name);
|
var extractedConfiguration = project.getConfigurations().create(DISTRO_EXTRACTED_CONFIG_PREFIX + name);
|
||||||
extractedConfiguration.getAttributes()
|
extractedConfiguration.getAttributes()
|
||||||
.attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.DIRECTORY_TYPE);
|
.attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.DIRECTORY_TYPE);
|
||||||
|
|
||||||
var distribution = new ElasticsearchDistribution(
|
var distribution = new ElasticsearchDistribution(
|
||||||
name,
|
name,
|
||||||
objectFactory,
|
objectFactory,
|
||||||
|
@ -96,16 +99,20 @@ public class DistributionDownloadPlugin implements Plugin<Project> {
|
||||||
objectFactory.fileCollection().from(extractedConfiguration)
|
objectFactory.fileCollection().from(extractedConfiguration)
|
||||||
);
|
);
|
||||||
|
|
||||||
registerDistributionDependencies(project, distribution);
|
// when running with --write-dependency-verification to update dependency verification data,
|
||||||
|
// we do not register the dependencies as we ignore elasticsearch internal dependencies anyhow and
|
||||||
|
// want to reduce general resolution time
|
||||||
|
if (writingDependencies == false) {
|
||||||
|
registerDistributionDependencies(project, distribution);
|
||||||
|
}
|
||||||
return distribution;
|
return distribution;
|
||||||
});
|
});
|
||||||
project.getExtensions().add(CONTAINER_NAME, distributionsContainer);
|
project.getExtensions().add(CONTAINER_NAME, distributionsContainer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerDistributionDependencies(Project project, ElasticsearchDistribution distribution) {
|
private void registerDistributionDependencies(Project project, ElasticsearchDistribution distribution) {
|
||||||
project.getConfigurations()
|
Configuration distroConfig = project.getConfigurations().getByName(DISTRO_CONFIG_PREFIX + distribution.getName());
|
||||||
.getByName(DISTRO_CONFIG_PREFIX + distribution.getName())
|
distroConfig.getDependencies()
|
||||||
.getDependencies()
|
|
||||||
.addLater(
|
.addLater(
|
||||||
project.provider(() -> distribution.maybeFreeze())
|
project.provider(() -> distribution.maybeFreeze())
|
||||||
.map(
|
.map(
|
||||||
|
@ -114,9 +121,9 @@ public class DistributionDownloadPlugin implements Plugin<Project> {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
project.getConfigurations()
|
Configuration extractedDistroConfig = project.getConfigurations()
|
||||||
.getByName(DISTRO_EXTRACTED_CONFIG_PREFIX + distribution.getName())
|
.getByName(DISTRO_EXTRACTED_CONFIG_PREFIX + distribution.getName());
|
||||||
.getDependencies()
|
extractedDistroConfig.getDependencies()
|
||||||
.addAllLater(
|
.addAllLater(
|
||||||
project.provider(() -> distribution.maybeFreeze())
|
project.provider(() -> distribution.maybeFreeze())
|
||||||
.map(
|
.map(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue