diff --git a/build.gradle.kts b/build.gradle.kts index f5de2c4..d84c21f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,14 +1,13 @@ - import java.security.MessageDigest - import java.text.SimpleDateFormat - import java.util.Date +import java.text.SimpleDateFormat +import java.util.Date - plugins { - id("java") - id("java-library") - id("maven-publish") - id("com.github.johnrengelman.shadow") version ("8.1.1") - } +plugins { + id("java") + id("java-library") + id("maven-publish") + id("com.github.johnrengelman.shadow") version ("8.1.1") +} val GROUPSID = project.properties["GROUPSID"] as String val VERSIONS = project.properties["VERSIONS"] as String @@ -22,7 +21,6 @@ val srcJarName = "${jarNameStr}-sources.jar" val fatJarName = "${jarNameStr}-all.jar" group = GROUPSID version = VERSIONS - val libDir = rootDir.resolve("build").resolve("libs") val publicationsDir = rootDir.resolve("build").resolve("publications").resolve("mavenJava") @@ -38,6 +36,10 @@ dependencies { testRuntimeOnly("org.junit.platform:junit-platform-launcher") implementation("org.jetbrains:annotations:24.0.0") annotationProcessor("org.jetbrains:annotations:24.0.0") + implementation("com.mingliqiye:string-utilts:1.0.4") + implementation("org.bouncycastle:bcprov-jdk18on:1.81") + implementation("org.mindrot:jbcrypt:0.4") + implementation("args4j:args4j:2.33") } tasks.test { @@ -131,11 +133,15 @@ tasks.register("build-jar") { dependsOn(tasks["generatePomFileForMavenJavaPublication"]) dependsOn(tasks["generateMetadataFileForMavenJavaPublication"]) doLast { - getHash(libDir.toString(),File(libDir, jarName)) - getHash(libDir.toString(),File(libDir, fatJarName)) - getHash(libDir.toString(),File(libDir, srcJarName)) - getHash(publicationsDir.toString(),File(publicationsDir, "module.json")) - getHash(publicationsDir.toString(),File(publicationsDir, "pom-default.xml")) + getHash(libDir.toString(), File(libDir, jarName)) + getHash(libDir.toString(), File(libDir, fatJarName)) + getHash(libDir.toString(), File(libDir, srcJarName)) + getHash( + publicationsDir.toString(), File(publicationsDir, "module.json") + ) + getHash( + publicationsDir.toString(), File(publicationsDir, "pom-default.xml") + ) } } components { diff --git a/gradle.properties b/gradle.properties index 58d8b22..9fde6ef 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ GROUPSID=com.mingliqiye -ARTIFACTID=socket-utilts -VERSIONS=0.1 -MAINCLASS=com.mingliqiye.Main +ARTIFACTID=hash-utilts +VERSIONS=1.0.1 +MAINCLASS=com.mingliqiye.utils.HashUtils JDKVERSIONS=1.8 diff --git a/settings.gradle.kts b/settings.gradle.kts index 79dab80..e314529 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,2 @@ -rootProject.name = "socket-utilts" +val ARTIFACTID: String by settings.extra +rootProject.name= ARTIFACTID diff --git a/src/main/java/com/mingliqiye/Main.java b/src/main/java/com/mingliqiye/Main.java deleted file mode 100644 index 1f285d4..0000000 --- a/src/main/java/com/mingliqiye/Main.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.mingliqiye; - -public class Main { - /** - * @param args [] - */ - public static void main(String[] args) { - System.out.print("Hello and welcome!"); - for (int i = 1; i <= 5; i++) { - System.out.println("i = " + i); - } - } -} diff --git a/src/main/java/com/mingliqiye/utils/HashUtils.java b/src/main/java/com/mingliqiye/utils/HashUtils.java new file mode 100644 index 0000000..935f9dc --- /dev/null +++ b/src/main/java/com/mingliqiye/utils/HashUtils.java @@ -0,0 +1,135 @@ +package com.mingliqiye.utils; + +import org.bouncycastle.jce.provider.BouncyCastleProvider; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.Security; + +import org.kohsuke.args4j.Argument; +import org.kohsuke.args4j.CmdLineException; +import org.kohsuke.args4j.CmdLineParser; +import org.kohsuke.args4j.Option; +import org.mindrot.jbcrypt.BCrypt; + +public class HashUtils { + + static { + Security.addProvider(new BouncyCastleProvider()); + } + + /** + * 计算文件的哈希值(支持标准算法 + Bouncy Castle 扩展算法) + * + * @param file 目标文件 + * @param algorithm 哈希算法(如 "MD5", "SHA-1", "SHA-256", "SHA3-256", "BLAKE2B-512") + * @return 哈希值的十六进制字符串 + * @throws IOException 文件读取异常 + * @throws NoSuchAlgorithmException 不支持的哈希算法 + */ + public static String calculateFileHash(File file, String algorithm) + throws IOException, NoSuchAlgorithmException { + + // 检查文件是否存在 + if (!file.exists()) { + throw new IOException("File not found: " + file.getAbsolutePath()); + } + + MessageDigest digest = MessageDigest.getInstance(algorithm); + + try (FileInputStream fis = new FileInputStream(file)) { + byte[] buffer = new byte[8192]; // 8KB 缓冲区 + int bytesRead; + + while ((bytesRead = fis.read(buffer)) != -1) { + digest.update(buffer, 0, bytesRead); + } + } + + return bytesToHex(digest.digest()); + } + + /** + * 将字节数组转换为十六进制字符串(优化版) + */ + private static String bytesToHex(byte[] bytes) { + StringBuilder hexString = new StringBuilder(2 * bytes.length); + for (byte b : bytes) { + String hex = Integer.toHexString(0xff & b); + if (hex.length() == 1) { + hexString.append('0'); + } + hexString.append(hex); + } + return hexString.toString(); + } + + public static String bcrypt(String string) { + return BCrypt.hashpw(string, BCrypt.gensalt()); + } + + public static boolean checkBcrypt(String string, String bcrypted) { + return BCrypt.checkpw(string, bcrypted); + } + + public static class comands { + @Argument(metaVar = "第一项", usage = "输入文件路径 必须", required = true) + public String path; + @Option(name = "-a", metaVar = "字符串", usage = "算法") + public String algorithm = "md5,sha1,sha256,sha512"; + @Option(name = "-help", usage = "显示帮助", help = true) + private boolean help; + @Option(name = "-o", metaVar = "字符串", usage = "输出目录") + private String outPutDir = System.getProperty("user.dir"); + ; + } + + public static void main(String[] args) { + + comands comands = new comands(); + CmdLineParser parser = new CmdLineParser(comands); + try { + parser.parseArgument(args); + if (comands.help) { + parser.printUsage(System.out); + System.exit(0); + } + + File file2 = new File(comands.outPutDir); + if (!file2.exists()) { + file2.mkdirs(); + } + File file = new File(comands.path); + for (String i : comands.algorithm.split(",")) { + try { + String s = calculateFileHash(file, i); + System.out.println(StringUtil.format("{}:{}", i, s)); + File file3 = new File(file2.toURI().resolve( + StringUtil.format("{}.{}", file.getName(), i))); + if (!file3.exists()) { + file3.createNewFile(); + } + try (FileOutputStream outputStream = + new FileOutputStream(file3)){ + outputStream.write(s.getBytes(StandardCharsets.UTF_8)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException( + StringUtil.format("文件不存在 {}", file), e); + } catch (IOException e) { + throw new RuntimeException( + StringUtil.format("文件打开失败 {}", file), e); + } + } + } catch (CmdLineException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/resources/META-INF/native-image/jni-config.json b/src/main/resources/META-INF/native-image/jni-config.json new file mode 100644 index 0000000..8b4e417 --- /dev/null +++ b/src/main/resources/META-INF/native-image/jni-config.json @@ -0,0 +1,6 @@ +[ +{ + "name":"java.lang.Boolean", + "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] +} +] diff --git a/src/main/resources/META-INF/native-image/predefined-classes-config.json b/src/main/resources/META-INF/native-image/predefined-classes-config.json new file mode 100644 index 0000000..0e79b2c --- /dev/null +++ b/src/main/resources/META-INF/native-image/predefined-classes-config.json @@ -0,0 +1,8 @@ +[ + { + "type":"agent-extracted", + "classes":[ + ] + } +] + diff --git a/src/main/resources/META-INF/native-image/proxy-config.json b/src/main/resources/META-INF/native-image/proxy-config.json new file mode 100644 index 0000000..0d4f101 --- /dev/null +++ b/src/main/resources/META-INF/native-image/proxy-config.json @@ -0,0 +1,2 @@ +[ +] diff --git a/src/main/resources/META-INF/native-image/reflect-config.json b/src/main/resources/META-INF/native-image/reflect-config.json new file mode 100644 index 0000000..a7cde85 --- /dev/null +++ b/src/main/resources/META-INF/native-image/reflect-config.json @@ -0,0 +1,482 @@ +[ +{ + "name":"com.mingliqiye.utils.HashUtils$comands", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"java.lang.Object", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"java.nio.file.Path" +}, +{ + "name":"java.security.cert.PKIXRevocationChecker" +}, +{ + "name":"java.util.concurrent.atomic.AtomicReference", + "fields":[{"name":"value"}] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.CONTEXT$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.CompositeSignatures$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.Dilithium$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ECGOST$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EXTERNAL$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EdEC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ElGamal$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.Falcon$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.GM$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.GOST$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.IES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.LMS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.MLDSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.MLKEM$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.NTRU$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.NoSig$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.SLHDSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.SPHINCSPlus$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Haraka$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Keccak$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA224$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA384$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA512$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SM3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Skein$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Tiger$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.drbg.DRBG$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.BC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.BCFKS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.AES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SipHash128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.kohsuke.args4j.spi.BooleanOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.ByteOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.CharOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.DoubleOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.FileOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.FloatOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.InetAddressOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.IntOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.LongOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.MapOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.PathOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.PatternOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.ShortOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.StringOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.URIOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +}, +{ + "name":"org.kohsuke.args4j.spi.URLOptionHandler", + "methods":[{"name":"","parameterTypes":["org.kohsuke.args4j.CmdLineParser","org.kohsuke.args4j.OptionDef","org.kohsuke.args4j.spi.Setter"] }] +} +] diff --git a/src/main/resources/META-INF/native-image/resource-config.json b/src/main/resources/META-INF/native-image/resource-config.json new file mode 100644 index 0000000..ff5b1d4 --- /dev/null +++ b/src/main/resources/META-INF/native-image/resource-config.json @@ -0,0 +1,14 @@ +{ + "resources":{ + "includes":[{ + "pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E" + }, { + "pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E" + }, { + "pattern":"\\QMETA-INF/services/java.util.spi.ResourceBundleControlProvider\\E" + }]}, + "bundles":[{ + "name":"org.kohsuke.args4j.Messages", + "locales":["", "en"] + }] +} diff --git a/src/main/resources/META-INF/native-image/serialization-config.json b/src/main/resources/META-INF/native-image/serialization-config.json new file mode 100644 index 0000000..f3d7e06 --- /dev/null +++ b/src/main/resources/META-INF/native-image/serialization-config.json @@ -0,0 +1,8 @@ +{ + "types":[ + ], + "lambdaCapturingTypes":[ + ], + "proxies":[ + ] +}