Skip to content

Commit

Permalink
Fix review feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
lazar-mitrovic committed Jun 10, 2022
1 parent 0afe2d8 commit 5e68bec
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 28 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test-native-gradle-plugin.yml
Expand Up @@ -53,7 +53,7 @@ jobs:
strategy:
fail-fast: false
matrix:
gradle-version: ["current", "7.3.3", "6.7.1"]
gradle-version: ["current", "7.3.3", "7.2", "7.1", "6.8.3", "6.7.1"]
graalvm-version: [ dev ]
java-version: [ 11 ]
os: [ ubuntu-20.04 ]
Expand Down
Expand Up @@ -205,8 +205,8 @@ public String getName() {

/**
* Returns the MapProperty that contains information about configuration that should be excluded
* during image building. It consists of a dependency coordinates and a list of
* regular expressions that match resources that should be excluded as a value.
* during image building. It consists of dependency coordinates and a list of
* regular expressions that match resources that should be excluded.
*
* @return a map of filters for configuration exclusion
*/
Expand Down
Expand Up @@ -43,8 +43,8 @@

import org.graalvm.buildtools.gradle.dsl.NativeImageOptions;
import org.graalvm.buildtools.utils.NativeImageUtils;
import org.gradle.api.Project;
import org.gradle.api.Transformer;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
import org.gradle.api.file.FileSystemLocation;
import org.gradle.api.file.RegularFile;
Expand All @@ -58,6 +58,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class NativeImageCommandLineProvider implements CommandLineArgumentProvider {
Expand All @@ -68,20 +69,17 @@ public class NativeImageCommandLineProvider implements CommandLineArgumentProvid
private final Provider<String> outputDirectory;
private final Provider<RegularFile> classpathJar;
private final Provider<Boolean> useArgFile;
private final Project project;

public NativeImageCommandLineProvider(Provider<NativeImageOptions> options,
Provider<String> executableName,
Provider<String> outputDirectory,
Provider<RegularFile> classpathJar,
Provider<Boolean> useArgFile,
Project project) {
Provider<Boolean> useArgFile) {
this.options = options;
this.executableName = executableName;
this.outputDirectory = outputDirectory;
this.classpathJar = classpathJar;
this.useArgFile = useArgFile;
this.project = project;
}

@Nested
Expand All @@ -108,24 +106,32 @@ private List<String> buildExcludeConfigArgs(NativeImageOptions options) {
List<String> args = new ArrayList<>();
options.getExcludeConfig().get().forEach((dependency, listOfResourcePatterns) -> {
// Resolve jar for this dependency.
project.getConfigurations().getByName("runtimeClasspath").getIncoming().artifactView(view -> {
view.setLenient(true);
view.componentFilter(id -> {
if (id instanceof ModuleComponentIdentifier) {
ModuleComponentIdentifier mid = (ModuleComponentIdentifier) id;
String gav = String.format("%s:%s",
mid.getGroup(),
mid.getModule()
);
return dependency.startsWith(gav);
}
return false;
});
}).getFiles().forEach(jarPath -> listOfResourcePatterns.forEach(resourcePattern -> {
args.add("--exclude-config");
args.add(jarPath.toPath().toAbsolutePath().toString());
args.add(String.format("\"%s\"", resourcePattern));
}));
options.getClasspath()
.getFrom().stream()
.filter(Configuration.class::isInstance)
.map(Configuration.class::cast)
.map(configuration -> configuration.getIncoming().artifactView(view -> {
view.setLenient(true);
view.componentFilter(id -> {
if (id instanceof ModuleComponentIdentifier) {
ModuleComponentIdentifier mid = (ModuleComponentIdentifier) id;
String gav = String.format("%s:%s",
mid.getGroup(),
mid.getModule()
);
return dependency.startsWith(gav);
}
return false;
});
}).getFiles().getFiles())
.flatMap(Set::stream) // merge resulting sets of files
.collect(Collectors.toSet())
.forEach(jarPath -> listOfResourcePatterns.forEach(resourcePattern -> {
args.add("--exclude-config");
args.add(jarPath.toPath().toAbsolutePath().toString());
args.add(String.format("\"%s\"", resourcePattern));
}));

});
return args;
}
Expand Down
Expand Up @@ -155,8 +155,7 @@ private List<String> buildActualCommandLineArgs() {
// a mapped value before the task was called, when we are actually calling it...
getProviders().provider(() -> getOutputDirectory().getAsFile().get().getAbsolutePath()),
getClasspathJar(),
getUseArgFile(),
getProject()
getUseArgFile()
).asArguments();
}

Expand Down

0 comments on commit 5e68bec

Please sign in to comment.