Support file-based reachability metadata repositories
See gh-32408
This commit is contained in:
parent
8323f24ccc
commit
e8aa5680d6
|
|
@ -17,6 +17,7 @@
|
|||
package org.springframework.boot.gradle.plugin;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import org.graalvm.buildtools.gradle.NativeImagePlugin;
|
||||
|
|
@ -31,6 +32,7 @@ import org.gradle.api.file.FileCopyDetails;
|
|||
import org.gradle.api.plugins.ExtensionAware;
|
||||
import org.gradle.api.plugins.JavaPlugin;
|
||||
import org.gradle.api.plugins.JavaPluginExtension;
|
||||
import org.gradle.api.provider.Property;
|
||||
import org.gradle.api.tasks.SourceSet;
|
||||
import org.gradle.api.tasks.SourceSetContainer;
|
||||
|
||||
|
|
@ -87,17 +89,24 @@ class NativeImagePluginAction implements PluginApplicationAction {
|
|||
private void copyReachabilityMetadataToBootJar(Project project, GraalVMExtension graalVmExtension) {
|
||||
Path repositoryCacheDir = new File(project.getGradle().getGradleUserHomeDir(),
|
||||
"native-build-tools/repositories").toPath();
|
||||
|
||||
project.getTasks().named(SpringBootPlugin.BOOT_JAR_TASK_NAME, BootJar.class).configure((bootJar) -> {
|
||||
NativeImageOptions options = graalVmExtension.getBinaries().named(NativeImagePlugin.NATIVE_MAIN_EXTENSION)
|
||||
.get();
|
||||
GraalVMReachabilityMetadataRepositoryExtension metadataRepositoryExtension = ((ExtensionAware) graalVmExtension)
|
||||
.getExtensions().getByType(GraalVMReachabilityMetadataRepositoryExtension.class);
|
||||
Property<URI> metadataRepositoryUri = metadataRepositoryExtension.getUri();
|
||||
bootJar.from(options.getConfigurationFileDirectories())
|
||||
.eachFile((file) -> normalizePathIfNecessary(repositoryCacheDir, file));
|
||||
.eachFile((file) -> normalizePathIfNecessary(repositoryCacheDir, metadataRepositoryUri, file));
|
||||
});
|
||||
}
|
||||
|
||||
private void normalizePathIfNecessary(Path repositoryCacheDir, FileCopyDetails configurationFile) {
|
||||
private void normalizePathIfNecessary(Path repositoryCacheDir, Property<URI> metadataRepositoryUri,
|
||||
FileCopyDetails configurationFile) {
|
||||
Path configurationFilePath = configurationFile.getFile().toPath();
|
||||
if (configurationFilePath.startsWith(repositoryCacheDir)) {
|
||||
Path repositoryMetadataRoot = ("file".equals(metadataRepositoryUri.get().getScheme()))
|
||||
? Path.of(metadataRepositoryUri.get()) : repositoryCacheDir;
|
||||
if (configurationFilePath.startsWith(repositoryMetadataRoot)) {
|
||||
Path versionDir = configurationFilePath.getParent();
|
||||
Path artifactDir = versionDir.getParent();
|
||||
Path groupDir = artifactDir.getParent();
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import org.junit.jupiter.api.TestTemplate;
|
|||
|
||||
import org.springframework.boot.gradle.junit.GradleCompatibility;
|
||||
import org.springframework.boot.testsupport.gradle.testkit.GradleBuild;
|
||||
import org.springframework.util.FileSystemUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
|
|
@ -68,6 +69,24 @@ class NativeImagePluginActionIntegrationTests {
|
|||
"META-INF/native-image/org.jline/jline/3.21.0/resource-config.json");
|
||||
}
|
||||
|
||||
@TestTemplate
|
||||
void reachabilityMetadataConfigurationFilesFromFileRepositoryAreCopiedToJar() throws IOException {
|
||||
writeDummyAotProcessorMainClass();
|
||||
FileSystemUtils.copyRecursively(new File("src/test/resources/reachability-metadata-repository"),
|
||||
new File(this.gradleBuild.getProjectDir(), "reachability-metadata-repository"));
|
||||
BuildResult result = this.gradleBuild.build("bootJar");
|
||||
assertThat(result.task(":bootJar").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||
File buildLibs = new File(this.gradleBuild.getProjectDir(), "build/libs");
|
||||
File jarFile = new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".jar");
|
||||
assertThat(buildLibs.listFiles()).contains(jarFile);
|
||||
assertThat(getEntryNames(jarFile)).contains(
|
||||
"META-INF/native-image/ch.qos.logback/logback-classic/1.2.11/reflect-config.json",
|
||||
"META-INF/native-image/org.jline/jline/3.21.0/jni-config.json",
|
||||
"META-INF/native-image/org.jline/jline/3.21.0/proxy-config.json",
|
||||
"META-INF/native-image/org.jline/jline/3.21.0/reflect-config.json",
|
||||
"META-INF/native-image/org.jline/jline/3.21.0/resource-config.json");
|
||||
}
|
||||
|
||||
private void writeDummyAotProcessorMainClass() {
|
||||
File examplePackage = new File(this.gradleBuild.getProjectDir(), "src/main/java/org/springframework/boot");
|
||||
examplePackage.mkdirs();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot'
|
||||
id 'org.springframework.boot.aot'
|
||||
}
|
||||
|
||||
apply plugin: 'org.graalvm.buildtools.native'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "ch.qos.logback:logback-classic:1.2.11"
|
||||
implementation "org.jline:jline:3.21.0"
|
||||
}
|
||||
|
||||
graalvmNative {
|
||||
metadataRepository {
|
||||
uri(file("reachability-metadata-repository"))
|
||||
}
|
||||
// see https://github.com/graalvm/native-build-tools/issues/302
|
||||
agent {
|
||||
tasksToInstrumentPredicate = { t -> false } as java.util.function.Predicate<Test>
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
[
|
||||
"reflect-config.json"
|
||||
]
|
||||
|
|
@ -0,0 +1,299 @@
|
|||
[
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.CallerDataConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.CallerDataConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.ClassOfCallerConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.ContextNameConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.DateConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.FileOfCallerConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.LevelConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.LineOfCallerConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.LineSeparatorConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.LocalSequenceNumberConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.LoggerConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.MDCConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.MarkerConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.MessageConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.MethodOfCallerConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.NopThrowableInformationConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.PrefixCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.PropertyConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.RelativeTimeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.ThreadConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.ThrowableProxyConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.IdentityCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.ReplacingCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BlackCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BlueCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BoldBlueCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BoldCyanCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BoldGreenCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BoldMagentaCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BoldRedCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BoldWhiteCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.BoldYellowCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.CyanCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.GrayCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.GreenCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.MagentaCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.RedCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.WhiteCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "ch.qos.logback.classic.LoggerContext"
|
||||
},
|
||||
"name": "ch.qos.logback.core.pattern.color.YellowCompositeConverter",
|
||||
"allPublicConstructors": true
|
||||
},
|
||||
{
|
||||
"name": "org.slf4j.impl.StaticLoggerBinder"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"latest": true,
|
||||
"metadata-version": "1.2.11",
|
||||
"module": "ch.qos.logback:logback-classic",
|
||||
"tested-versions": [
|
||||
"1.2.11"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"directory": "org.jline/jline",
|
||||
"module": "org.jline:jline"
|
||||
},
|
||||
{
|
||||
"directory": "ch.qos.logback/logback-classic",
|
||||
"module": "ch.qos.logback:logback-classic"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
[
|
||||
"jni-config.json",
|
||||
"proxy-config.json",
|
||||
"reflect-config.json",
|
||||
"resource-config.json"
|
||||
]
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
[
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "HAVE_ISATTY"
|
||||
},
|
||||
{
|
||||
"name": "HAVE_TTYNAME"
|
||||
},
|
||||
{
|
||||
"name": "TCSADRAIN"
|
||||
},
|
||||
{
|
||||
"name": "TCSAFLUSH"
|
||||
},
|
||||
{
|
||||
"name": "TCSANOW"
|
||||
},
|
||||
{
|
||||
"name": "TIOCGETD"
|
||||
},
|
||||
{
|
||||
"name": "TIOCGWINSZ"
|
||||
},
|
||||
{
|
||||
"name": "TIOCSETD"
|
||||
},
|
||||
{
|
||||
"name": "TIOCSWINSZ"
|
||||
}
|
||||
],
|
||||
"name": "org.fusesource.jansi.internal.CLibrary"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.CLibrary$WinSize"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.CLibrary$WinSize"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.CLibrary$Termios"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.CLibrary$Termios"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$SMALL_RECT"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$SMALL_RECT"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$COORD"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$COORD"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$CONSOLE_SCREEN_BUFFER_INFO"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$CONSOLE_SCREEN_BUFFER_INFO"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$CHAR_INFO"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$CHAR_INFO"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$KEY_EVENT_RECORD"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$KEY_EVENT_RECORD"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$MOUSE_EVENT_RECORD"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$MOUSE_EVENT_RECORD"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$WINDOW_BUFFER_SIZE_RECORD"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$WINDOW_BUFFER_SIZE_RECORD"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$FOCUS_EVENT_RECORD"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$FOCUS_EVENT_RECORD"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$MENU_EVENT_RECORD"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$MENU_EVENT_RECORD"
|
||||
},
|
||||
{
|
||||
"allDeclaredFields": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.fusesource.jansi.internal.Kernel32$INPUT_RECORD"
|
||||
},
|
||||
"name": "org.fusesource.jansi.internal.Kernel32$INPUT_RECORD"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.Signals"
|
||||
},
|
||||
"interfaces": [
|
||||
"sun.misc.SignalHandler"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
[
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
|
||||
},
|
||||
"name": "java.io.FileDescriptor",
|
||||
"queriedMethods": [
|
||||
{
|
||||
"name": "<init>",
|
||||
"parameterTypes": [
|
||||
"int"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.TerminalBuilder"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
"name": "current",
|
||||
"parameterTypes": []
|
||||
},
|
||||
{
|
||||
"name": "info",
|
||||
"parameterTypes": []
|
||||
},
|
||||
{
|
||||
"name": "parent",
|
||||
"parameterTypes": []
|
||||
}
|
||||
],
|
||||
"name": "java.lang.ProcessHandle"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.TerminalBuilder"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
"name": "command",
|
||||
"parameterTypes": []
|
||||
}
|
||||
],
|
||||
"name": "java.lang.ProcessHandle$Info"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.builtins.Styles"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
"name": "get",
|
||||
"parameterTypes": []
|
||||
}
|
||||
],
|
||||
"name": "org.jline.console.SystemRegistry"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.Signals"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
"name": "<init>",
|
||||
"parameterTypes": [
|
||||
"java.lang.String"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "handle",
|
||||
"parameterTypes": [
|
||||
"sun.misc.Signal",
|
||||
"sun.misc.SignalHandler"
|
||||
]
|
||||
}
|
||||
],
|
||||
"name": "sun.misc.Signal"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.Signals"
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "SIG_DFL"
|
||||
}
|
||||
],
|
||||
"name": "sun.misc.SignalHandler"
|
||||
},
|
||||
{
|
||||
"allDeclaredClasses": true,
|
||||
"allDeclaredConstructors": true,
|
||||
"allDeclaredMethods": true,
|
||||
"allPublicClasses": true,
|
||||
"allPublicConstructors": true,
|
||||
"allPublicMethods": true,
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.TerminalBuilder"
|
||||
},
|
||||
"name": "sun.misc.SignalHandler"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
{
|
||||
"bundles": [],
|
||||
"resources": {
|
||||
"includes": [
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.TerminalBuilder"
|
||||
},
|
||||
"pattern": "\\QMETA-INF/services/org.jline.terminal.spi.JansiSupport\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.TerminalBuilder"
|
||||
},
|
||||
"pattern": "\\QMETA-INF/services/org.jline.terminal.spi.JnaSupport\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
|
||||
},
|
||||
"pattern": "\\Qorg/fusesource/jansi/internal/native/Linux/x86_64/libjansi.so\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
|
||||
},
|
||||
"pattern": "\\QMETA-INF/native/windows64/jansi.dll\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
|
||||
},
|
||||
"pattern": "\\Qorg/fusesource/jansi/jansi.properties\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.jansi.JansiSupportImpl"
|
||||
},
|
||||
"pattern": "\\Qorg/fusesource/jansi/jansi.properties\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/capabilities.txt\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.Colors"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/colors.txt\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/ansi.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.DumbTerminal"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/dumb.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.DumbTerminal"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/dumb-color.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/rxvt.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/rxvt-basic.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/rxvt-unicode.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/rxvt-unicode-256color.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/screen.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/screen-256color.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.AbstractWindowsTerminal"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/windows.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.AbstractWindowsTerminal"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/windows-256color.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.terminal.impl.AbstractWindowsTerminal"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/windows-conemu.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/xterm.caps\\E"
|
||||
},
|
||||
{
|
||||
"condition": {
|
||||
"typeReachable": "org.jline.utils.InfoCmp"
|
||||
},
|
||||
"pattern": "\\Qorg/jline/utils/xterm-256color.caps\\E"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"latest": true,
|
||||
"metadata-version": "3.21.0",
|
||||
"module": "org.jline:jline",
|
||||
"tested-versions": [
|
||||
"3.21.0"
|
||||
]
|
||||
}
|
||||
]
|
||||
Loading…
Reference in New Issue