{"id":29441641,"url":"https://github.com/goto-eof/jmodules","last_synced_at":"2025-07-13T14:06:19.386Z","repository":{"id":296362922,"uuid":"992701370","full_name":"goto-eof/jmodules","owner":"goto-eof","description":" It helps developers prepare their projects for packaging with jpackage by identifying the necessary modules, whether from individual JARs, entire directories of JARs, or Maven pom.xml files.","archived":false,"fork":false,"pushed_at":"2025-06-07T04:36:31.000Z","size":99,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-07T05:26:05.289Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goto-eof.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-29T15:19:03.000Z","updated_at":"2025-06-07T04:36:35.000Z","dependencies_parsed_at":"2025-05-30T11:05:10.579Z","dependency_job_id":"019779b4-0ab3-4472-a35b-ba3a8d880853","html_url":"https://github.com/goto-eof/jmodules","commit_stats":null,"previous_names":["goto-eof/jmodules"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/goto-eof/jmodules","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Fjmodules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Fjmodules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Fjmodules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Fjmodules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goto-eof","download_url":"https://codeload.github.com/goto-eof/jmodules/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Fjmodules/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265153236,"owners_count":23719144,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-13T14:06:18.460Z","updated_at":"2025-07-13T14:06:19.378Z","avatar_url":"https://github.com/goto-eof.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JModules: A Java Module Info Extractor for JPackage Preparation\n\nJModules' core operational logic lies in its orchestration of the jdeps command-line tool. It intelligently processes\nyour JARs or Maven pom.xml files, executes jdeps behind the scenes, and then efficiently parses and consolidates its\noutput to identify the exact Java modules required for your application. This enables precise package optimization,\nreducing the size of your distributed bundles.\n\n---\n\n### Prerequisites:\n\nBefore using JModules, ensure you have the following installed and properly configured in your system's PATH:\n\n* **Java Development Kit (JDK):** Required for `jdeps` (typically included with JDK 9+).\n* **Apache Maven:** Required for processing `pom.xml` files.\n\n---\n\n### Key Features:\n\n* **Flexible JAR Input:** Process single JAR files, recursively scan entire directories for JARs, or extract\n  dependencies from a Maven `pom.xml` file.\n* **Module Information Extraction:** Utilizes the `jdeps` command-line tool (part of the JDK) to analyze JARs and\n  determine their required Java modules.\n* **Optimized Packaging Preparation:** Helps you list *only* the necessary modules, enabling `jpackage` to create\n  smaller, more efficient application bundles.\n* **GUI-Driven Workflow:** A user-friendly Swing interface allows for easy input of paths, selection of Java versions,\n  and visualization of extracted module data.\n* **Progress Tracking:** A progress bar provides visual feedback during potentially long processing operations.\n* **Clipboard Integration:** Easily copy the generated `jpackage --add-modules` command string to your clipboard,\n  streamlining your build process.\n* **Asynchronous Processing:** All heavy-lifting operations run on a dedicated background thread, ensuring the GUI\n  remains responsive and preventing freezing.\n* **Robust Error Handling:** Provides clear error messages to the user via `JOptionPane` for issues encountered during\n  file processing or command execution, with detailed logging for debugging.\n\n---\n\n### How it Works:\n\nJModules acts as a wrapper around the `jdeps` tool. You provide the application with the path to your JAR(s) or\n`pom.xml`, specify the Java version (e.g., `11`), and the application does the rest:\n\n1. **Locate JARs:** Scans the specified path to identify all relevant JAR files.\n2. **Run `jdeps`:** Executes `jdeps` for each identified JAR to determine its module dependencies.\n3. **Aggregate Modules:** Collects and deduplicates all discovered module names.\n4. **Generate Command:** Formats the collected module names into a `jpackage` compatible `--add-modules` argument.\n5. **Display Results:** Shows the individual JAR-to-module mappings and the final aggregated module list in the GUI.\n\nThis tool is particularly useful for migrating legacy applications to the Java Module System or for simplifying the\ncreation of self-contained `jpackage` installers with **a minimal footprint**.\n\n \u003cimg src=\"https://andre-i.eu/api/v1/ipResource/custom.png?host=https://github.com/goto-eof/jmodules\" onerror=\"this.style.display='none'\" /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoto-eof%2Fjmodules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoto-eof%2Fjmodules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoto-eof%2Fjmodules/lists"}