Skip to content

Provide command to compile into .jar #228

@tobiasBora

Description

@tobiasBora

Prerequisite

  • I checked this feature was not already requested here

Is your feature request related to a problem? Please describe.

I'm trying to package PDF4teachers into nixpkgs. Most java programs I saw provide a way to compile into a single .jar file that contains all dependencies, and then nix creates a wrapper that calls this .jar with the nix-package java version (possibly compiled with JavaFX support).

See for instance these packages involving JavaFX + external dependencies:

Describe the solution you'd like

Provide a gradle task to build a self-contained jar file.

Describe alternatives you've considered

I tried to check if this was possible, but I couldn't find a way to do it cleanly. The build gradle task produces a file build/libs/source-v1.4.4.jar but it seems like this jar does not contain dependencies. I also tried to jlink target, but then I need to use the provided java with patchelfhook (a nixos "hack" to package proprietary software), but I feel like this is not the proper solution.

Note that I'm a java packager newby, so it may be the case that cleaner solutions exist, if you know them please let me know.

Additional context

Here is the current state of my nix package. It works (but should be made cleaner since for now java is exported as a new public binary), but I feel like it's not the good solution.

{ lib
, stdenv
, fetchFromGitHub
, gradle_8
, makeWrapper
, jre
, jdk
, tree
, wrapGAppsHook3
, gobject-introspection
, autoPatchelfHook
}:

let jdkfx = jdk.override (
      lib.optionalAttrs stdenv.hostPlatform.isLinux {
        enableJavaFX = true;
        # openjfx_jdk = openjfx.override { withWebKit = true; };
      }
    );
in
stdenv.mkDerivation (finalAttrs: {
  pname = "PDF4Teachers";
  version = "1.4.4";

  src = fetchFromGitHub {
    owner = "ClementGre";
    repo = finalAttrs.pname;
    rev = "${finalAttrs.version}";
    sha256 = "sha256-0J/RVC8NXdyO1kFQOnA6TRKUBsQ6hr4bC4Ztaq1v63c=";
  };

  postPatch = ''
    # Disable update check
    substituteInPlace build.gradle \
      --replace "javaHome.set('/home/clement/.jdks/corretto-21.0.4')" "javaHome.set('${jdkfx}/lib/openjdk')"
    cat build.gradle
  '';

  
  nativeBuildInputs = [
    gradle_8
    makeWrapper
    wrapGAppsHook3
    gobject-introspection
    autoPatchelfHook # Works but I feel like this is not the right solution
  ];
 
  buildInputs = [
    
  ];
  
  # if the package has dependencies, mitmCache must be set
  mitmCache = gradle_8.fetchDeps {
    # inherit (finalAttrs) pname;
    pkg = finalAttrs.finalPackage;
    data = ./deps.json;
  };

  # this is required for using mitm-cache on Darwin
  __darwinAllowLocalNetworking = true;

  gradleFlags = [
    "-Dfile.encoding=utf-8"
  ];

  # defaults to "assemble"
  #gradleBuildTask = "shadowJar";
  #gradleBuildTask = "build";
  gradleBuildTask = "jlink";
  #gradleBuildTask = "jar";

  installPhase = ''
    ${tree}/bin/tree
    mkdir -p $out/{bin,lib,conf}
    #cp -r build/image/PDF4Teachers-lin/bin/PDF4Teachers $out/bin
    cp -r build/image/PDF4Teachers-lin/bin/* $out/bin
    cp -r build/image/PDF4Teachers-lin/conf/* $out/conf
    cp -r build/image/PDF4Teachers-lin/lib/* $out/lib
    mkdir -p $out/build
    cp -r build/ $out/build
    #cp -r build/ $out
    # mkdir -p $out/{bin,share/pdftk}
    # cp build/libs/pdftk-all.jar $out/share/pdftk

    # makeWrapper ${lib.getExe jre} $out/bin/pdftk \
    #   --add-flags "-jar $out/share/pdftk/pdftk-all.jar"

    # cp ${finalAttrs.src}/pdftk.1 $out/share/man/man1
  '';


  postFixup = ''
  
  '';
  
  meta = with lib; {
    homepage = "https://pdf4teachers.org/";
    description = "Rediscover the annotation and grading of assessments";
    license = licenses.asl20;
    maintainers = with maintainers; [ tobiasBora ];
    platforms = platforms.unix;
    sourceProvenance = with lib.sourceTypes; [
      fromSource
      binaryBytecode # mitm cache
    ];
  };
})

with the following deps.json:

{
 "!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
 "!version": 1,
 "https://clojars.org": {
  "repo/google-diff-match-patch#google-diff-match-patch/0.1": {
   "jar": "sha256-CmgZSv2aZhfjSWfaHXcxe+mHz7Mi79wt0Id0cAR1JW8=",
   "pom": "sha256-3GD/0wLNVGlMAmEmVn0QAUopCSrrzZw50DxBq4GElcI="
  }
 },
 "https://jitpack.io": {
  "com/github/Dansoftowner#jSystemThemeDetector/3.9.1": {
   "jar": "sha256-eJ+Z9+T6fOzZ/N9Rrclxjodtmr5MQ+dIAZn5dDgynxM=",
   "module": "sha256-J/HNSDQmh7t/zYkB8N58yoEyrm2qG3fG3gKN54uXItc=",
   "pom": "sha256-+JipzNZJVA17d97rnodpuPgkJFboCsZz2wJaDaR8bEk="
  }
 },
 "https://plugins.gradle.org/m2": {
  "com/google/code/findbugs#jsr305/3.0.2": {
   "jar": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=",
   "pom": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4="
  },
  "com/google/gradle#osdetector-gradle-plugin/1.7.3": {
   "jar": "sha256-a0aS+ROiGx+2Axae54uo8+SrKvnXYq+cqIt5EmwcCtE=",
   "pom": "sha256-hGDJUBJ8o1mHZhYeOLT/jWO01p+4MQoW4As1E1ABDBE="
  },
  "kr/motd/maven#os-maven-plugin/1.7.1": {
   "jar": "sha256-9Hru+Ggh5SsrGHWJeL0EXwPXIikuMudHCCEixiKJUuA=",
   "pom": "sha256-S3WABEIrljPdMY8p54Tx0YC9ilkgzVCvGTCGH21qVHY="
  },
  "org/beryx#badass-jlink-plugin/3.0.1": {
   "jar": "sha256-dgjXY18yKiLff//d+IiBuTngqBDuUmoqTFPFN7/WT4Y=",
   "module": "sha256-b3ksJpweGUNdCWcOtY12cyOFm2Hpt9YcZLPMdHK8Qgo=",
   "pom": "sha256-OwPpihIF17Spe7jcvlkCs6AW4D+FACDzkjuIWomh2zM="
  },
  "org/beryx/jlink#org.beryx.jlink.gradle.plugin/3.0.1": {
   "pom": "sha256-MRg/jaYel0ILAf4NarvkrGfgYY5PxAEyfBu8HvoBCqw="
  },
  "org/gradlex#extra-java-module-info/1.8": {
   "jar": "sha256-DmUlngVgVRWF8m7nmpxu3KZKvLJrRqMI4IkQHYxRjZI=",
   "module": "sha256-QeguoT4SwDPQxnUenEUDi39pKmfsaBX/rXGGvnIADJE=",
   "pom": "sha256-9vDz0yriO3QAVWsooBUT8VwUFfLnVtj5Av4UOfNknB0="
  },
  "org/gradlex/extra-java-module-info#org.gradlex.extra-java-module-info.gradle.plugin/1.8": {
   "pom": "sha256-jig1ITCS2OahjUwF9APLaTKStj3hPolMR9l/c0T401w="
  },
  "org/openjfx#javafx-plugin/0.1.0": {
   "jar": "sha256-Xq7sB5m0QGRrDKTP2iGaMttr4rpXktAyoNpKOlw4j6s=",
   "module": "sha256-rf+3RA0kntF8BJOD1nBp+UU7F3gncMAFtoKkNBbYNmE=",
   "pom": "sha256-NMjfVSfrWjXl8AmjzeH3oInEzkoOclgC8uy+UDu9PLY="
  },
  "org/openjfx/javafxplugin#org.openjfx.javafxplugin.gradle.plugin/0.1.0": {
   "pom": "sha256-1tASf/Q2PQAXPDV6mByec+/wPDCl0Ohq2CtgVPrvqEE="
  },
  "org/ow2#ow2/1.5.1": {
   "pom": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU="
  },
  "org/ow2/asm#asm/9.6": {
   "jar": "sha256-PG+sJCTbPUqFO2afTj0dnDxVIjXhmjGWc/iHCDwjA6E=",
   "pom": "sha256-ku7iS8PIQ+SIHUbB3WUFRx7jFC+s+0ZrQoz+paVsa2A="
  },
  "org/sonatype/oss#oss-parent/7": {
   "pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
  },
  "org/sonatype/oss#oss-parent/9": {
   "pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
  }
 },
 "https://repo.maven.apache.org/maven2": {
  "com/adobe/xmp#xmpcore/6.1.11": {
   "jar": "sha256-j3AzxXm5n6DZ1t3LlEiHW15LV3w1AAInjORpl9Z4tzc=",
   "pom": "sha256-cZEYGCECwlM+kqL2fANRAmTmFgVxpzishj51cSQXMj0="
  },
  "com/drewnoakes#metadata-extractor/2.19.0": {
   "jar": "sha256-5Ru0VO0I6iv8w60UfQiK0apzqZngByVj+K5QAhovyts=",
   "pom": "sha256-fqXDxPtl2ERBve2oMsDprgToozurEcr4J6tOWXtjsu0="
  },
  "com/fasterxml#oss-parent/58": {
   "pom": "sha256-VnDmrBxN3MnUE8+HmXpdou+qTSq+Q5Njr57xAqCgnkA="
  },
  "com/fasterxml/jackson#jackson-base/2.17.1": {
   "pom": "sha256-4K78YdOPzd2VX/7sAbt1EE8bv/+jpuy1jb50r7cV4yI="
  },
  "com/fasterxml/jackson#jackson-bom/2.17.1": {
   "pom": "sha256-n0RhIo4SkQPu16MC3BABqy5Mgt086pFcKn27jMYe/SU="
  },
  "com/fasterxml/jackson#jackson-parent/2.17": {
   "pom": "sha256-rubeSpcoOwQOQ/Ta1XXnt0eWzZhNiSdvfsdWc4DIop0="
  },
  "com/fasterxml/jackson/core#jackson-core/2.17.1": {
   "jar": "sha256-3bJsih8ahFNeghPEizWyUzcENOMoezzxV3eFb8TljOY=",
   "module": "sha256-iowJZP38Js7bso2CXfRiGBf7jNIrnnpZ2cdKOl8b3R0=",
   "pom": "sha256-2UiDEgmgTAE5G5Oq7nrTShyelIY/nnaFwvW2FJoqs50="
  },
  "com/github/davidmoten#sonatype-parent/0.1": {
   "pom": "sha256-9Q5Goo6n4j+EMErZ/xsqWJskdSy0R9nq7eb1r4T56s4="
  },
  "com/github/jai-imageio#jai-imageio-core/1.4.0": {
   "jar": "sha256-itPGjp7/+xCsh/+LxYmt9ksEpynFGUwHnv0GQ2B/1yo=",
   "pom": "sha256-Ac0LjPRGoe4kVuyeg8Q11gRH0G6fVJBMTm/sCPfO8qw="
  },
  "com/github/jai-imageio#jai-imageio-jpeg2000/1.4.0": {
   "jar": "sha256-B/tuOjBAEiuEbF5SUgAzF1wyUeLsiDDfgvh8sh84i7E=",
   "pom": "sha256-jQd0KBAHliclrx93swfN6BbP1+4loQxTI3nW41ZMvh4="
  },
  "com/github/oshi#oshi-core/5.8.6": {
   "jar": "sha256-avZFtrMZxaH+alrAPB+0seypajtifK6JU1L5ibcgkBc=",
   "pom": "sha256-iNcNOxnby2YuXDxFceX8mavCZldu+Cv6u7RGkm9MISo="
  },
  "com/github/oshi#oshi-parent/5.8.6": {
   "pom": "sha256-Fe+B2OTv+TYQPJ+HYGMM7LNXs5OGTFuvnKWHQTOzkMc="
  },
  "com/google/code/gson#gson-parent/2.8.6": {
   "pom": "sha256-NzZGOFnsGSZyleiUlAroKo9oRBMDESL+Nc58/34wp3Q="
  },
  "com/google/code/gson#gson/2.8.6": {
   "jar": "sha256-yPtIOQVNKAswM/gA0fWpfeLwKOuLoutFitKH5Tbz8l8=",
   "pom": "sha256-IXRBWmRzMtMP2gS9HPxwij7MhOr3UX9ZYYjYJE4QORE="
  },
  "com/opencsv#opencsv/5.9": {
   "jar": "sha256-ICOWm4bOlorYrlSWSKxYfRQcGa5oSppcZ8kQXzerDRw=",
   "pom": "sha256-l+UC78Xmwt0VZiGynKy8D0dEIowAmPaxafV/eukwMGA="
  },
  "commons-beanutils#commons-beanutils/1.9.4": {
   "jar": "sha256-fZOMgXiQKARcCMBl6UvnX8KAUnYg1b1itRnVg4UyNoo=",
   "pom": "sha256-w1zKe2HUZ42VeMvAuQG4cXtTmr+SVEQdp4uP5g3gZNA="
  },
  "commons-collections#commons-collections/3.2.2": {
   "jar": "sha256-7urpF5FxRKaKdB1MDf9mqlxcX9hVk/8he87T/Iyng7g=",
   "pom": "sha256-1dgfzCiMDYxxHDAgB8raSqmiJu0aES1LqmTLHWMiFws="
  },
  "commons-io#commons-io/2.11.0": {
   "jar": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=",
   "pom": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k="
  },
  "commons-logging#commons-logging/1.2": {
   "pom": "sha256-yRq1qlcNhvb9B8wVjsa8LFAIBAKXLukXn+JBAHOfuyA="
  },
  "commons-logging#commons-logging/1.3.0": {
   "jar": "sha256-ZtPJgEcLmbDFEdrT38CueyZewfsUTpa8AlOooXX9NNk=",
   "pom": "sha256-je/afOtIiP/k1OYyeJVqGjxRS3W4Nj1nFqG9Zv6WLH8="
  },
  "de/jangassen#jfa/1.2.0": {
   "jar": "sha256-8cwY8VldRBroOc2hRlwIsefbRrcsHX87NzIK4WQexys=",
   "pom": "sha256-tNgod+BwsV0dTmdrQV9qVCnw4i3U75gX2F5MWcU7yr8="
  },
  "de/jangassen#nsmenufx/3.1.0": {
   "jar": "sha256-cpEcwG3rujj45dA57CNC0u5nYhijMjqpWlzIqDOn3fQ=",
   "pom": "sha256-RNGXv3eGUMJC0dats3Jt12D0yBywQcmX2S2yMhxR8Q4="
  },
  "de/rototor/pdfbox#graphics2d/3.0.2": {
   "jar": "sha256-nc6GQd/8dloE2+FArgSvmH5B1CTuGfa50eNNkcMk2/s=",
   "pom": "sha256-Hgmt+QDxAKt1bYYczLSDTIyqSa09PE+gre9BLyhJBvQ="
  },
  "de/rototor/pdfbox#pdfboxgraphics2d-parent/3.0.2": {
   "pom": "sha256-2Bdl+fRUlr5Fii0++4JK1mpg9+mJR2hSl4hyUio5gfE="
  },
  "io/github/g00fy2#versioncompare/1.4.1": {
   "jar": "sha256-0mgnvHDjpuBw9bco4vhNvwopE5siGBr2Vm4MFvCNRGU=",
   "module": "sha256-rHAoh4apAuF5CeYvf7dyrkIcRgqxDnIAtQIfWONIE2w=",
   "pom": "sha256-6nUQLRXjrmYp7wResnYd5EAyW24RYSjC8P1MFj3Slj0="
  },
  "net/java/dev/jna#jna-platform/5.12.1": {
   "jar": "sha256-jOlpEWyslb1hsHqNXgcXSzUuYzAUc8qscsOV48CEiNI=",
   "pom": "sha256-wnn/o7UWjiIDCHIxxjiRmnzsdFgAaxzaZpWXR4YPtFc="
  },
  "net/java/dev/jna#jna/5.12.1": {
   "jar": "sha256-kagUrE9A1g3ukdhC4aith0xiGXmEQD0OPDDTnlXPU7M=",
   "pom": "sha256-Zf8lhJuthZVUtQMXeS9Wia20UprkAx6aUkYxnLK4U1Y="
  },
  "org/apache#apache/13": {
   "pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
  },
  "org/apache#apache/16": {
   "pom": "sha256-n4X/L9fWyzCXqkf7QZ7n8OvoaRCfmKup9Oyj9J50pA4="
  },
  "org/apache#apache/18": {
   "pom": "sha256-eDEwcoX9R1u8NrIK4454gvEcMVOx1ZMPhS1E7ajzPBc="
  },
  "org/apache#apache/19": {
   "pom": "sha256-kfejMJbqabrCy69tAf65NMrAAsSNjIz6nCQLQPHsId8="
  },
  "org/apache#apache/21": {
   "pom": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A="
  },
  "org/apache#apache/23": {
   "pom": "sha256-vBBiTgYj82V3+sVjnKKTbTJA7RUvttjVM6tNJwVDSRw="
  },
  "org/apache#apache/29": {
   "pom": "sha256-PkkDcXSCC70N9jQgqXclWIY5iVTCoGKR+mH3J6w1s3c="
  },
  "org/apache#apache/3": {
   "pom": "sha256-OTxQr7S3qm61flN3pVoaBhCxn3W1Ls4BMI2wShGHog4="
  },
  "org/apache#apache/30": {
   "pom": "sha256-Y91KOTqcDfyzFO/oOHGkHSQ7yNIAy8fy0ZfzDaeCOdg="
  },
  "org/apache#apache/31": {
   "pom": "sha256-VV0MnqppwEKv+SSSe5OB6PgXQTbTVe6tRFIkRS5ikcw="
  },
  "org/apache#apache/7": {
   "pom": "sha256-E5fOHbQzrcnyI9vwdJbRM2gUSHUfSuKeWPaOePtLbCU="
  },
  "org/apache/commons#commons-collections4/4.4": {
   "jar": "sha256-Hfi5QwtcjtFD14FeQD4z71NxskAKrb6b2giDdi4IRtE=",
   "pom": "sha256-JxvWc4Oa9G5zr/lX4pGNS/lvWsT2xs9NW+k/0fEnHE0="
  },
  "org/apache/commons#commons-lang3/3.13.0": {
   "jar": "sha256-gvUoz3GMejwvMPxbx4TjxqChCxdgXa254WyC7eEeYGQ=",
   "pom": "sha256-/3zqTrI53WIRdRDavlGo1fDJ5MxCa8PowsIhpxj4ZIQ="
  },
  "org/apache/commons#commons-parent/34": {
   "pom": "sha256-Oi5p0G1kHR87KTEm3J4uTqZWO/jDbIfgq2+kKS0Et5w="
  },
  "org/apache/commons#commons-parent/39": {
   "pom": "sha256-h80n4aAqXD622FBZzphpa7G0TCuLZQ8FZ8ht9g+mHac="
  },
  "org/apache/commons#commons-parent/47": {
   "pom": "sha256-io7LVwVTv58f+uIRqNTKnuYwwXr+WSkzaPunvZtC/Lc="
  },
  "org/apache/commons#commons-parent/48": {
   "pom": "sha256-Hh996TcKe3kB8Sjx2s0UIr504/R/lViw954EwGN8oLQ="
  },
  "org/apache/commons#commons-parent/52": {
   "pom": "sha256-ddvo806Y5MP/QtquSi+etMvNO18QR9VEYKzpBtu0UC4="
  },
  "org/apache/commons#commons-parent/58": {
   "pom": "sha256-LUsS4YiZBjq9fHUni1+pejcp2Ah4zuy2pA2UbpwNVZA="
  },
  "org/apache/commons#commons-parent/64": {
   "pom": "sha256-bxljiZToNXtO1zRpb5kgV++q+hI1ZzmYEzKZeY4szds="
  },
  "org/apache/commons#commons-parent/65": {
   "pom": "sha256-bPNJX8LmrJE6K38uA/tZCPs/Ip+wbTNY3EVnjVrz424="
  },
  "org/apache/commons#commons-text/1.11.0": {
   "jar": "sha256-Ks8woHCxkWPVpIDq5BGigTQehwAg41NMbV1MhHJznjA=",
   "pom": "sha256-O0AZecBkEoXYUM8Ri04Y8EmsIj3Hherk0LNXKPxTTRE="
  },
  "org/apache/pdfbox#fontbox/3.0.2": {
   "jar": "sha256-ds8EEOkD49txQDKvu0WNWiO5IlO5/fiAA18J6orTraw=",
   "pom": "sha256-hthT5W8q+Yb6c1s/kH6jh6KXNCLH0F8TwDasuRNal90="
  },
  "org/apache/pdfbox#jbig2-imageio/3.0.4": {
   "jar": "sha256-KcspUWIvEKz2H9BlbE5vpVYhlKkJX3odJqpCbi9rF+s=",
   "pom": "sha256-KOp8SskuCYX3lqi8aJCnvviSZwetrf0eLIVsmwvho4s="
  },
  "org/apache/pdfbox#pdfbox-io/3.0.2": {
   "jar": "sha256-nW535C437zaC53aBEpwxRRXog9UKvB3aljguejHnDjg=",
   "pom": "sha256-yD3gYR+UMN4W2dakjfXJEPgrkfHgU1xB9Woy9iYwz0c="
  },
  "org/apache/pdfbox#pdfbox-parent/3.0.2": {
   "pom": "sha256-kN6rEjTjkUu8B07Ax3Y7+kFHgICziISpOwtVVxnWY0g="
  },
  "org/apache/pdfbox#pdfbox/3.0.2": {
   "jar": "sha256-yv4sysEB6ao63z9+p23/AuWIWislWLdfr/l0dvBIfuI=",
   "pom": "sha256-wMNAwn6AF2V+Y81PaJUG8U03Y10NFebRpAjysZFGax8="
  },
  "org/apache/xmlgraphics#batik-awt-util/1.17": {
   "jar": "sha256-f+OPlFHrlFdSFDIyYcgZK2Px39JhBlklX7u7/elKKmY=",
   "pom": "sha256-K0uhvyKqtiKmdyIXZTnRlWJ92KVfggGRq0udbh/PrgI="
  },
  "org/apache/xmlgraphics#batik-constants/1.17": {
   "jar": "sha256-ddsAGAveTvXK7jkW1vZeUEUFHVnPUdV+ZzwDlp17u80=",
   "pom": "sha256-BtbvBrb+NCkKDiopaz95YejFX18VgvCVIcguAAt5Px8="
  },
  "org/apache/xmlgraphics#batik-i18n/1.17": {
   "jar": "sha256-1aZGgDY+ezaz8ow0o6U2126Ef3fOwHQKq3x5mme1LYs=",
   "pom": "sha256-LczXNOp8Pf3cOQDcrOgYGIsUZsAq6dqK4wpwj3Tw9MI="
  },
  "org/apache/xmlgraphics#batik-parser/1.17": {
   "jar": "sha256-XkSLv69hJ1Z/QfaY7iWtebhENjBxwS0RdYlseIkXF9c=",
   "pom": "sha256-O4WKAV0DzUCF+HnRF81IbyijM3IIG0oRL/w5OjPzMOs="
  },
  "org/apache/xmlgraphics#batik-shared-resources/1.17": {
   "jar": "sha256-XXQYK5yhns2NSBTy/0tCpK7qbhiXfpBcyE6Kb4GUDJ8=",
   "pom": "sha256-ut4U1rq9//BiLBjNPCUf9flZN4MFieL2jgO92nu1RxE="
  },
  "org/apache/xmlgraphics#batik-util/1.17": {
   "jar": "sha256-oeT3Q8i4CsaC7dSzl/qkrELeWRNDA2MkyA7o8ilzyXY=",
   "pom": "sha256-gtWFfUG9TeWskX7sgSoz0zKXN04UOAew4KYt7KBVofk="
  },
  "org/apache/xmlgraphics#batik-xml/1.17": {
   "jar": "sha256-+8wjAAZqxAQodsUsMnrN8LUVli8WkEAO16eO0sDUwbQ=",
   "pom": "sha256-0ypeBt4LkxxN2ebgS/oSQHwkNwmmmNdpZ7TnkYoPLn0="
  },
  "org/apache/xmlgraphics#batik/1.17": {
   "pom": "sha256-D9ZlDtWtkmuw6X2xx/yMJqQOOmtrShOxR2XryjKvsTo="
  },
  "org/apache/xmlgraphics#xmlgraphics-commons/2.9": {
   "jar": "sha256-Lr0zOrKmJFFHk8M2468IZghnMob+N7oeY54Kw+G1i+I=",
   "pom": "sha256-CS1SCmHKS4pFkEN0JMQhzbDPQOeYrs7PKwUm8q+PH4g="
  },
  "org/controlsfx#controlsfx/11.2.1": {
   "jar": "sha256-63VY0JTDa4Yw6oqab40k+K9F0ak6N14R4gbXbAgiFDA=",
   "pom": "sha256-veC6xL8EPqp19uTOEbpXfHneak+5Mfd1e93Y36MwKTc="
  },
  "org/jetbrains#annotations/24.0.0": {
   "jar": "sha256-/xEvVM6HS4romc/WjwMV2WyfQGozi47KgMdtEOLlovc=",
   "pom": "sha256-q4eN2sP6teB48NqVHqvWf77d09KvFzn+t/lHFgJ1Xws="
  },
  "org/jfxtras#jmetro/11.6.16": {
   "jar": "sha256-X6v+k5kULSxCzepdifdJ0n1e8N01698l4LYwkspZ3vE=",
   "pom": "sha256-zRJGTYfPiIZTRNQ12wQtbuNsHgs+C+ik+orKAn4r/Ws="
  },
  "org/junit#junit-bom/5.10.0": {
   "module": "sha256-6z7mEnYIAQaUqJgFbnQH0RcpYAOrpfXbgB30MLmIf88=",
   "pom": "sha256-4AbdiJT5/Ht1/DK7Ev5e2L5lZn1bRU+Z4uC4xbuNMLM="
  },
  "org/junit#junit-bom/5.10.1": {
   "module": "sha256-IbCvz//i7LN3D16wCuehn+rulOdx+jkYFzhQ2ueAZ7c=",
   "pom": "sha256-IcSwKG9LIAaVd/9LIJeKhcEArIpGtvHIZy+6qzN7w/I="
  },
  "org/junit#junit-bom/5.10.2": {
   "module": "sha256-3iOxFLPkEZqP5usXvtWjhSgWaYus5nBxV51tkn67CAo=",
   "pom": "sha256-Fp3ZBKSw9lIM/+ZYzGIpK/6fPBSpifqSEgckzeQ6mWg="
  },
  "org/junit#junit-bom/5.7.2": {
   "module": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=",
   "pom": "sha256-zRSqqGmZH4ICHFhdVw0x/zQry6WLtEIztwGTdxuWSHs="
  },
  "org/junit#junit-bom/5.9.3": {
   "module": "sha256-tAH9JZAeWCpSSqU0PEs54ovFbiSWHBBpvytLv87ka5M=",
   "pom": "sha256-TQMpzZ5y8kIOXKFXJMv+b/puX9KIg2FRYnEZD9w0Ltc="
  },
  "org/openjfx#javafx-base/22": {
   "pom": "sha256-XPr4AKyei29O5+mOaRZvN0PAo+xyLhx8idLaEzmgQIE="
  },
  "org/openjfx#javafx-base/22/linux": {
   "jar": "sha256-guS1JYZGAz4MvYzoYKBZWGDIwNeOrfXKWQ9FNps7PQ8="
  },
  "org/openjfx#javafx-controls/22": {
   "pom": "sha256-8AZSRCn/IPdz+tfjwXq9/qkkzMeqGamSoeQZPl/kCA8="
  },
  "org/openjfx#javafx-controls/22/linux": {
   "jar": "sha256-4E5POGe18PR56yKJsDgwPOn7TR3vImvJHCkYlpvzW2s="
  },
  "org/openjfx#javafx-fxml/22": {
   "pom": "sha256-N2R+Lpsq+3hcJKu2GjjD5p02av/TUyv6J+jIrm92tPI="
  },
  "org/openjfx#javafx-fxml/22/linux": {
   "jar": "sha256-K5X/HQ+4GUIrIU2Xs423Bc2alyMK41P0kr3UiJujqdY="
  },
  "org/openjfx#javafx-graphics/22": {
   "pom": "sha256-snXDI9Pbr1/anOegMkG/JEvfeJ5GFON+pMPjww4P858="
  },
  "org/openjfx#javafx-graphics/22/linux": {
   "jar": "sha256-ACrpnQ8ML2Clh72fkRaP7lvZ2AJ4H0eXV1lWz0icJLs="
  },
  "org/openjfx#javafx-swing/22": {
   "pom": "sha256-wPQryYkBk3076g85BuQT1HvgXNsaWu7FbRw5JD2DM5w="
  },
  "org/openjfx#javafx-swing/22/linux": {
   "jar": "sha256-JTdrxDkPNwbv3wlfQLGAZt9DWkNlufS99GGOWFZexZA="
  },
  "org/openjfx#javafx/22": {
   "pom": "sha256-ZO+kxQXukz+S0/4hqQ7RVKKs1Dhif6hKHYG7jRZWN58="
  },
  "org/scilab/forge#jlatexmath-font-cyrillic/1.0.7": {
   "jar": "sha256-GgFQ5L5k24jCUN/0H1kzSfVfDJz9uOOUM/Fbpz7NIbg=",
   "pom": "sha256-kburwRXaL3ZznId52afCXWmNjI5/CRCrqgehNwO2oi0="
  },
  "org/scilab/forge#jlatexmath-font-greek/1.0.7": {
   "jar": "sha256-zdx+fm8+f/BDTIpIBercPp3IBFfVgtGcNpnmqu6PavI=",
   "pom": "sha256-Y4k7Qay6GJQvIt8WO5Cex5yqLzRxjXvmJEeNQ7P6/mo="
  },
  "org/scilab/forge#jlatexmath-parent/1.0.7": {
   "pom": "sha256-1dUNpkwZJfPGVwiUI2nakFsYSyIBB5ueJntlLWM5Beg="
  },
  "org/scilab/forge#jlatexmath/1.0.7": {
   "jar": "sha256-bQTDhD/JjS7qm6TP8L57gFQMp1xaTgs0Y/0SGcSMxl0=",
   "pom": "sha256-w7H6Icz/7VRUA6U8EPte8MoMrT+ZCLIASoIjaItyLcg="
  },
  "org/slf4j#slf4j-api/1.7.32": {
   "jar": "sha256-NiT4R0wa9G11+YvAl9eGSjI8gbOAiqQ2iabhxgHAJ74=",
   "pom": "sha256-ABzeWzxrqRBwQlz+ny5pXkrri8KQotTNllMRJ6skT+U="
  },
  "org/slf4j#slf4j-parent/1.7.32": {
   "pom": "sha256-WrNJ0PTHvAjtDvH02ThssZQKL01vFSFQ4W277MC4PHA="
  },
  "org/sonatype/oss#oss-parent/7": {
   "pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
  },
  "org/yaml#snakeyaml/2.2": {
   "jar": "sha256-FGeTFEiggXaWrigFt7iyC/sIJlK/nE767VKJMNxJOJs=",
   "pom": "sha256-6YLq3HiMac8uTeUKn2MrGCwx26UGEoMNNI/EtLqN19Y="
  },
  "tk/pratanumandal#unique4j/1.4": {
   "jar": "sha256-iggqU749AnoVauGgtfb+iGNzH2QSasQTW/t//3efc+s=",
   "pom": "sha256-m59rkEM/a/ImQgXLfuTZz5PBGgzq9B05b6neU88o80Q="
  },
  "xml-apis#xml-apis-ext/1.3.04": {
   "jar": "sha256-0LSIfcNNV95JB0pYr/rUOaAT0Lr/oagDT47ypeoZFkY=",
   "pom": "sha256-G1k5qTEKWcDfDANyZyHV/JUh6H1sIDv6ciC66Cow2eg="
  }
 }
}

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions