Skip to content

Commit

Permalink
Use custom task implementation for use generate manifest (elastic#101165
Browse files Browse the repository at this point in the history
)

Follow up on elastic#101161 to make this behave better when using gradle
configuration cache
  • Loading branch information
breskeby authored Oct 19, 2023
1 parent a732633 commit d9ca42b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,37 @@
import org.elasticsearch.gradle.util.FileUtils;
import org.gradle.api.DefaultTask;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.provider.Provider;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.Classpath;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.TaskAction;

import java.io.File;
import java.util.stream.Collectors;

import javax.inject.Inject;

abstract class GenerateProviderManifest extends DefaultTask {

@Inject
public GenerateProviderManifest() {}

@Classpath
@InputFiles
abstract public ConfigurableFileCollection getProviderImplClasspath();

@OutputFile
abstract public Provider<File> getManifestFile();
@Input
abstract public Property<String> getManifestName();

@OutputDirectory
abstract DirectoryProperty getOutputDir();

@TaskAction
void generateManifest() {
File manifestFile = getManifestFile().get();
manifestFile.getParentFile().mkdirs();
File manifestFile = getOutputDir().file(getManifestName().get()).get().getAsFile();
FileUtils.write(manifestFile, generateManifestContent(), "UTF-8");
}

Expand Down
14 changes: 5 additions & 9 deletions libs/x-content/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@


import org.elasticsearch.gradle.transform.UnzipTransform
import org.elasticsearch.gradle.internal.GenerateProviderManifest
import org.gradle.api.internal.artifacts.ArtifactAttributes

import java.util.stream.Collectors
Expand Down Expand Up @@ -67,15 +68,10 @@ tasks.named("dependencyLicenses").configure {
}

File generatedResourcesDir = new File(buildDir, 'generated-resources')
def generateProviderManifest = tasks.register("generateProviderManifest") {
File manifestFile = new File(generatedResourcesDir, "LISTING.TXT")
inputs.files('jars', configurations.providerImpl).withPathSensitivity(PathSensitivity.RELATIVE)
outputs.file(manifestFile)
doLast {
manifestFile.parentFile.mkdirs()
manifestFile.setText(configurations.providerImpl.files.stream()
.map(f -> f.name).sorted().collect(Collectors.joining('\n')), 'UTF-8')
}
def generateProviderManifest = tasks.register("generateProviderManifest", GenerateProviderManifest.class) {
outputDir = layout.buildDirectory.dir('generated-resources')
manifestName = "LISTING.TXT"
getProviderImplClasspath().from(configurations.providerImpl)
}

def generateProviderImpl = tasks.register("generateProviderImpl", Sync) {
Expand Down

0 comments on commit d9ca42b

Please sign in to comment.