diff --git a/native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java b/native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java index b845c9100..ce273edac 100644 --- a/native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java +++ b/native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java @@ -121,6 +121,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.nio.file.Path; +import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -424,8 +425,11 @@ private static URI computeMetadataRepositoryUri(Project project, } private void configureJvmReachabilityExcludeConfigArgs(Project project, GraalVMExtension graalExtension, NativeImageOptions options, SourceSet sourceSet) { + options.getExcludeConfig().putAll(graalVMReachabilityQuery(project, graalExtension, sourceSet, + DirectoryConfiguration::isOverride, this::getExclusionConfig, + Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))); GraalVMReachabilityMetadataRepositoryExtension repositoryExtension = reachabilityExtensionOn(graalExtension); - Provider serviceProvider = project.getGradle() + project.getGradle() .getSharedServices() .registerIfAbsent("nativeConfigurationService", GraalVMReachabilityMetadataService.class, spec -> { LogLevel logLevel = determineLogLevel(); @@ -436,6 +440,12 @@ private void configureJvmReachabilityExcludeConfigArgs(Project project, GraalVME }); } + private Map.Entry> getExclusionConfig(ModuleVersionIdentifier moduleVersion, + DirectoryConfiguration configuration) { + String gav = moduleVersion.getGroup() + ":" + moduleVersion.getName() + ":" + moduleVersion.getVersion(); + return new AbstractMap.SimpleEntry<>(gav, Arrays.asList("^/META-INF/native-image/.*")); + } + private static LogLevel determineLogLevel() { LogLevel logLevel = LogLevel.DEBUG; String loggingProperty = System.getProperty(CONFIG_REPO_LOGLEVEL); diff --git a/samples/metadata-repo-integration/build.gradle b/samples/metadata-repo-integration/build.gradle index 2bd28d6da..9dc689676 100644 --- a/samples/metadata-repo-integration/build.gradle +++ b/samples/metadata-repo-integration/build.gradle @@ -49,16 +49,21 @@ repositories { } application { - mainClass.set('org.graalvm.example.H2Example') + mainClass.set('org.graalvm.example.Example') } String h2_version = getProperty("h2.version") String netty_version = getProperty("netty.version") - +String logback_version = getProperty("logback.version") +String log4j_version = getProperty("log4j.version") +String slf4j_version = getProperty("slf4j.version") dependencies { implementation("com.h2database:h2:$h2_version") implementation("io.netty:netty-codec-http:$netty_version") + implementation("ch.qos.logback:logback-classic:$logback_version") + implementation("org.apache.logging.log4j:log4j-to-slf4j:$log4j_version") + implementation("org.slf4j:jul-to-slf4j:$slf4j_version") } graalvmNative { diff --git a/samples/metadata-repo-integration/gradle.properties b/samples/metadata-repo-integration/gradle.properties index a80ae9995..807b408c2 100644 --- a/samples/metadata-repo-integration/gradle.properties +++ b/samples/metadata-repo-integration/gradle.properties @@ -1,3 +1,6 @@ native.gradle.plugin.version = 0.9.16-SNAPSHOT h2.version = 2.1.210 netty.version = 4.1.80.Final +logback.version = 1.4.4 +log4j.version = 2.19.0 +slf4j.version = 2.0.3 diff --git a/samples/metadata-repo-integration/pom.xml b/samples/metadata-repo-integration/pom.xml index f91ed47b1..df22c58cc 100644 --- a/samples/metadata-repo-integration/pom.xml +++ b/samples/metadata-repo-integration/pom.xml @@ -54,8 +54,13 @@ 0.9.16-SNAPSHOT 0.9.16-SNAPSHOT 2.1.210 - h2-demo - org.graalvm.example.H2Example + 4.1.80.Final + 1.4.4 + 2.19.0 + 2.0.3 + + metadata-repo-demo + org.graalvm.example.Example @@ -64,6 +69,26 @@ h2 ${h2.version} + + io.netty + netty-codec-http + ${netty.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + org.apache.logging.log4j + log4j-to-slf4j + ${log4j.version} + + + org.slf4j + jul-to-slf4j + ${slf4j.version} + @@ -118,7 +143,7 @@ true - 0.1.0 + 0.2.3 diff --git a/samples/metadata-repo-integration/settings.gradle b/samples/metadata-repo-integration/settings.gradle index 5a909b526..b0a46b65a 100644 --- a/samples/metadata-repo-integration/settings.gradle +++ b/samples/metadata-repo-integration/settings.gradle @@ -8,4 +8,4 @@ pluginManagement { } } -rootProject.name = 'h2-demo' +rootProject.name = 'metadata-repo-demo' diff --git a/samples/metadata-repo-integration/src/main/java/org/graalvm/example/Example.java b/samples/metadata-repo-integration/src/main/java/org/graalvm/example/Example.java new file mode 100644 index 000000000..04f2c5815 --- /dev/null +++ b/samples/metadata-repo-integration/src/main/java/org/graalvm/example/Example.java @@ -0,0 +1,9 @@ +package org.graalvm.example; + +public class Example { + + public static void main(String[] args) throws Exception { + H2Example.test(); + NettyExample.test(); + } +} diff --git a/samples/metadata-repo-integration/src/main/java/org/graalvm/example/H2Example.java b/samples/metadata-repo-integration/src/main/java/org/graalvm/example/H2Example.java index b743611ae..5ad8a764b 100644 --- a/samples/metadata-repo-integration/src/main/java/org/graalvm/example/H2Example.java +++ b/samples/metadata-repo-integration/src/main/java/org/graalvm/example/H2Example.java @@ -16,7 +16,7 @@ public class H2Example { public static final String JDBC_CONNECTION_URL = "jdbc:h2:./data/test"; - public static void main(String[] args) throws Exception { + public static void test() throws Exception { // Cleanup withConnection(JDBC_CONNECTION_URL, connection -> { connection.prepareStatement("DROP TABLE IF EXISTS customers").execute(); diff --git a/samples/metadata-repo-integration/src/main/java/org/graalvm/example/NettyExample.java b/samples/metadata-repo-integration/src/main/java/org/graalvm/example/NettyExample.java new file mode 100644 index 000000000..f1317c99a --- /dev/null +++ b/samples/metadata-repo-integration/src/main/java/org/graalvm/example/NettyExample.java @@ -0,0 +1,11 @@ +package org.graalvm.example; + +import io.netty.handler.codec.http.cookie.ServerCookieDecoder; + +public class NettyExample { + + public static void test() { + ServerCookieDecoder.STRICT.decode(""); + } + +}