{"id":27013500,"url":"https://github.com/eitco/eitco-mavenizer","last_synced_at":"2025-08-01T13:11:06.048Z","repository":{"id":127470729,"uuid":"577750219","full_name":"eitco/eitco-mavenizer","owner":"eitco","description":"Helps you to find or define Maven UIDs for any JAR file and generate corresponding artifact install scripts.","archived":false,"fork":false,"pushed_at":"2024-06-07T13:07:15.000Z","size":151,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-07T16:58:30.544Z","etag":null,"topics":["jar","java","maven","metadata"],"latest_commit_sha":null,"homepage":"https://github.com/eitco/eitco-mavenizer","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eitco.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-12-13T12:47:43.000Z","updated_at":"2024-06-07T13:07:19.000Z","dependencies_parsed_at":"2023-08-16T14:16:36.187Z","dependency_job_id":null,"html_url":"https://github.com/eitco/eitco-mavenizer","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eitco%2Feitco-mavenizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eitco%2Feitco-mavenizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eitco%2Feitco-mavenizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eitco%2Feitco-mavenizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eitco","download_url":"https://codeload.github.com/eitco/eitco-mavenizer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247178841,"owners_count":20896925,"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":["jar","java","maven","metadata"],"created_at":"2025-04-04T12:29:41.707Z","updated_at":"2025-04-04T12:29:42.292Z","avatar_url":"https://github.com/eitco.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License](https://img.shields.io/github/license/eitco/eitco-mavenizer.svg?style=for-the-badge)](https://opensource.org/license/mit)\r\n[![Build status](https://img.shields.io/github/actions/workflow/status/eitco/eitco-mavenizer/deploy.yaml?branch=main\u0026style=for-the-badge\u0026logo=github)](https://github.com/eitco/eitco-mavenizer/actions/workflows/deploy.yaml)\r\n[![Download](https://img.shields.io/github/v/release/eitco/eitco-mavenizer?style=for-the-badge\u0026label=download\u0026logo=github)](https://github.com/eitco/eitco-mavenizer/releases/latest/download/eitco-mavenizer.jar)\r\n\r\n\r\n**This repository is currently not maintained!**\r\n\r\n# Eitco Mavenizer\r\n\r\nHelps you to find or define Maven UIDs/coordinates for any JAR file and generate corresponding artifact install scripts.\r\n\r\n## Download \u0026 Execute\r\n- [Download](https://github.com/eitco/eitco-mavenizer/releases/latest/download/eitco-mavenizer.jar) provides an executable \"fat\" JAR file\r\n- Requires [Java 11 JRE or higher](https://adoptium.net/de/temurin/releases/?package=jre\u0026os=windows\u0026arch=x64) to be installed\r\n- Execute with `java -jar eitco-mavenizer.jar`\r\n\r\n## How to use\r\n\r\nThere are two main commands:\r\n\r\n### `analyze`\r\nAnalyze jar files to find their Maven UIDs/coordinates (groupId, artifactId, version) and save that information to a json report file.\r\n\r\nIn interactive mode (`-i`), you can complete missing information if the tool could not determine the UID conclusively. In this case the tool will provide best guesses based on various analysis information (manifest, timestamps, filename, .class package structure, online remote repository information).\r\n  \r\n### `generate`\r\n\r\nUse the report file created by the `analyze` command to create an maven install or deploy script. Scripts only contain the jars that could not be found online by the analyzer, since only those are missing from the remote(s) you are using.\r\n\r\nOptionally generate a pom containing the artifacts from the report (requires local jars to have been installed).\r\n\r\n### Known issues\r\n\r\n* Crashes on exit sometimes, leaving behind temporary files/folders - can be deleted manually, otherwise tool will delete them on next run\r\n\r\n### Example Analysis Output\r\n\r\nWhen executing ```C:\\test\u003e java -jar .\\eitco-mavenizer.jar analyze ./jars -forceDetailedOutput```, where `jars` is a directory containing `activation.jar`:\r\n\r\n```\r\nactivation.jar (1/1)\r\n    Found identical jar online, UID: ( javax.activation | activation | 1.1 )\r\n    Forced details:\r\n\r\n    SHA_256 (uncompressed): 7J4ovUbYqujZRFnJCcjlsON3HBtSJv1QLKVEbZ9COx8=\r\n\r\n    OFFLINE RESULT\r\n        GROUP_ID\r\n             6 | com.sun            (6 | Manifest -\u003e Implementation-Vendor-Id: 'com.sun')\r\n             5 | javax.activation   (4 | Manifest -\u003e Extension-Name: 'javax.activation')\r\n                                    (1 | Class-Filepath -\u003e Path contains  71% of classes: 'javax\\activation')\r\n        ARTIFACT_ID\r\n             6 | activation        (4 | Jar-Filename -\u003e 'activation.jar')\r\n                                   (2 | Manifest -\u003e Extension-Name: 'javax.activation')\r\n             1 | sun               (1 | Manifest -\u003e Implementation-Vendor-Id: 'com.sun')\r\n        VERSION\r\n             5 | 1.1               (3 | Manifest -\u003e Implementation-Version: '1.1')\r\n                                   (2 | Manifest -\u003e Specification-Version: '1.1')\r\n             1 | 2006.05.02        (1 | Class-Timestamp -\u003e 100% of classes have created/modified date: 2006-05-02)\r\n\r\n    ONLINE RESULT\r\n          FOUND_MATCH_EXACT_SHA   FOR ( javax.activation | activation | 1.1 ) AT https://repo1.maven.org/maven2/javax/activation/activation/1.1/activation-1.1.jar\r\n        Found artifactId / groupId pairs online, comparing local jar with random online versions:\r\n          PAIR:             ( javax.activation | activation | \u003cunknown-version\u003e )\r\n            NOT_FOUND   FOR ( javax.activation | activation | 1.0.2 )\r\n            FOUND_NO_MATCH   FOR ( javax.activation | activation | 1.1.1 ) AT https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar\r\n```\r\nOffline analysis:\r\n - On the left are the highest scoring candidates for each coordinate component  \r\n   (`6 | com.sun` means that the potential groupId `com.sun` scored a combined weight of 6 points).\r\n - On the right are the sources accumulated for each candidate with their individual scores  \r\n   (`4 | Manifest -\u003e Extension-Name: 'javax.activation'` means that the jar manifest contained the string `javax.activation` in the `Extension-Name` attribute, which was given a score of 4 points by the analyzer)\r\n\r\nOnline analysis:\r\n- On the left is the status of each online jar search/comparison:\r\n  - `FOUND_MATCH_EXACT_SHA` means that a JAR was found online and its content matches the local JAR exactly\r\n  - `FOUND_MATCH_EXACT_CLASSES_SHA` is similar to `FOUND_MATCH_EXACT_SHA` except that some non-class files did not match\r\n  - `FOUND_NO_MATCH` means that a JAR was found online at the given coordinates but does not match the local JAR\r\n- If the two highest scoring version candidates do not score above a certain threshold, `\u003cunknown-version\u003e` indicates that the analyzer just randomly chooses versions that actually exist online instead of trying to use the low-scoring version value (`2006.05.02` in this case) for finding/downloading/comparing online jars with the local jar.\r\n\r\n## CLI Documentation\r\n\r\n```\r\n-help, --help, -h\r\n\r\nanalyze      Analyze jars interactively to generate report with maven uid for each jar.\r\n  Usage: analyze [options] \u003cpath(s) to jar file(s) or parent folder(s)\u003e\r\n    Options:\r\n      -interactive, -i\r\n        Enable interactive mode to complete missing maven UID information for jars from unknown origin. If disabled, only jars are added to final report that could be found in a maven remote repository.\r\n        Default: false\r\n      -remoteRepos\r\n        Comma-separated list of remote maven repositories that are used to find identical jars. If not specified, repositories found in user's settings.xml's default profile are used. If specified, settings.xml will be ignored.\r\n      -reportFile\r\n        Only if -interactive is enabled: File path and name were result report should be created.\r\n        Default: ./eitco-mavenizer-report-\u003cdatetime\u003e.json\r\n      -forceDetailedOutput\r\n        Show full analysis results even when jar was found online.\r\n        Default: false\r\n      -offline\r\n        Disable attempts to find identical jars in remote repositories.\r\n        Default: false\r\n      -limit\r\n        If set to a positive number, only that many jars will be analyzed.\r\n        Default: -1\r\n      -start\r\n        If set to a positive number, jars are skipped until jar with given number is reached.\r\n        Default: 1\r\n\r\ngenerate      Generate install script or pom.xml from report file created by analyzer.\r\n  Usage: generate [options] \u003cpath(s) to report file(s) or parent folder(s)\u003e\r\n    Options:\r\n      -scriptCommand, -c\r\n        Command executed for each jar. Additional arguments can be included.\r\n        Default: mvn install:install-file\r\n      -noScript\r\n        Disable install script generation.\r\n        Default: false\r\n      -scriptType\r\n        Which script language(s) to generate. Currently supports only 'ps1' (powershell).\r\n        Default: [ps1]\r\n      -scriptFile\r\n        Name of install script output file (without file extension).\r\n        Default: eitco-mavenizer-install\r\n      -pom\r\n        Enable generation of pom.xml with dependencies from report.\r\n        Default: false\r\n      -pomFile\r\n        Only if -pom is enabled: Name of pom output file.\r\n        Default: eitco-mavenizer-pom.xml\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feitco%2Feitco-mavenizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feitco%2Feitco-mavenizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feitco%2Feitco-mavenizer/lists"}