{"id":13414237,"url":"https://github.com/modernizing/merry","last_synced_at":"2025-08-26T23:33:48.352Z","repository":{"id":64306458,"uuid":"270272807","full_name":"modernizing/merry","owner":"modernizing","description":"a legacy Java system build migration toolbox, support ant to maven, find lost dep in nexus...","archived":false,"fork":false,"pushed_at":"2022-02-12T07:54:39.000Z","size":1517,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-22T18:06:42.394Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/modernizing.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}},"created_at":"2020-06-07T10:37:17.000Z","updated_at":"2025-03-31T10:48:51.000Z","dependencies_parsed_at":"2023-01-15T10:45:13.724Z","dependency_job_id":null,"html_url":"https://github.com/modernizing/merry","commit_stats":null,"previous_names":["phodal/merry"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/modernizing/merry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/modernizing%2Fmerry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/modernizing%2Fmerry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/modernizing%2Fmerry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/modernizing%2Fmerry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/modernizing","download_url":"https://codeload.github.com/modernizing/merry/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/modernizing%2Fmerry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272267230,"owners_count":24903642,"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","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2024-07-30T21:00:17.001Z","updated_at":"2025-08-26T23:33:48.289Z","avatar_url":"https://github.com/modernizing.png","language":"Go","funding_links":[],"categories":["Migration Tool"],"sub_categories":["Datbase to Struct"],"readme":"# Going Merry\n\n\u003e a legacy Java system build migration toolbox, support ant to maven, find lost dep in nexus...\n\n![Go](https://github.com/phodal/merry/workflows/Go/badge.svg)\n[![Build Status](https://travis-ci.org/phodal/merry.svg?branch=master)](https://travis-ci.org/phodal/merry)\n[![codecov](https://codecov.io/gh/phodal/merry/branch/master/graph/badge.svg)](https://codecov.io/gh/phodal/merry)\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/phodal/merry)\n[![Maintainability](https://api.codeclimate.com/v1/badges/77b3f3f4a2444b33dc16/maintainability)](https://codeclimate.com/github/phodal/merry/maintainability)\n\nRefactor Tool -\u003e [Coca](https://github.com/phodal/coca)\n\nOnline Example for Call Analysis: [https://modernizing.github.io/merry/demo](https://modernizing.github.io/merry/demo)\n\nOnline Screenshots:\n\n![Merry](docs/screenshots/merry.png)\n\nFeature lists:\n\n```bash\nAvailable Commands:\n  boom        generate pom.xml from build.xml\n  call        show call graph for packages\n  checksum    checksum file md5\n  dupsearch   build maven pom from all jars file\n  fix         fix jar naming issue\n  help        Help about any command\n  manifest    manifest query \u0026 map tools\n  map         generate map.csv from jar\n  pom         generate pom file from jar file\n  version     version\n\n```\n\n## Usage\n\n1. install\n\n```bash\ngo get -u github.com/phodal/merry\n```\n\n2. generate `pom.xml` from `build.xml`\n\n```bash\nmerry boom\n```\n\n3. search package lost in nexus\n\n```bash\nmerry dupsearch\n```\n\n4. map file example\n\nformat: `{origin},{GroupId},{ArtifactId},{VersionId}`\n\n```\norigin,groupid,artifactId,version\norg.springframework.transaction,org.springframework,transaction.org.springframework.transaction,2.5.6.SEC01\njavax.servlet,javax.servlet,javax.servlet,2.4.0\nedu.emory.mathcs.backport.java.util,edu.emory.mathcs.backport,com.springsource.edu.emory.mathcs.backport,3.1.0\nedu.emory.mathcs.backport.java.util.concurrent,edu.emory.mathcs.backport,com.springsource.edu.emory.mathcs.backport,3.1.0\nedu.emory.mathcs.backport.java.util.concurrent.atomic,edu.emory.mathcs.backport,com.springsource.edu.emory.mathcs.backport,3.1.0\nedu.emory.mathcs.backport.java.util.concurrent.helpers,edu.emory.mathcs.backport,com.springsource.edu.emory.mathcs.backport,3.1.0\nedu.emory.mathcs.backport.java.util.concurrent.locks,edu.emory.mathcs.backport,com.springsource.edu.emory.mathcs.backport,3.1.0\norg.apache.commons.dbcp,org.apache.commons,com.springsource.org.apache.commons.dbcp,1.2.2.osgi\norg.apache.commons.logging,commons-logging,commons-logging,1.1.1\norg.slf4j,org.slf4j,org.slf4j,1.5.1\n```\n\n### Manifest\n\n```bash\nUsage:\n  merry manifest [flags]\n\nFlags:\n  -e, --excludeSource   is with exclude source file\n  -x, --extract         extract manifest file from jar\n  -f, --filter string   filter\n  -h, --help            help for manifest\n  -m, --merge           is merge package\n  -p, --path string     path (default \".\")\n  -s, --scan            scan manifest file to graphviz\n  -v, --version         show manifest version info of jar\n```\n\nexamples:\n\n```bash\nmerry manifest -s -x -f org.eclipse.equinox -p ~/sdk/equinox-SDK-4.15/plugins\n```\n\n### Generate Pom from jars\n\n```bash\nmerry pom -p _fixtures/demo -m _fixtures/map/map.csv\n```\n\n### Call Graph by Manifest.MF\n\n```bash\nFlags:\n  -h, --help          help for call\n  -m, --map string    map file\n  -p, --path string   path (default \".\")\n  -s, --server        with server\n```\n\nfull steps:\n\n```bash\nmerry manifest -s -p ~/sdk/apache-karaf-4.2.9/lib/boot  -x\nmerry map -p ~/sdk/apache-karaf-4.2.9/lib/boot\nmerry call -p ~/sdk/apache-karaf-4.2.9/lib/boot -m map.csv\n```\n\nresults:\n\n![Call Graph](docs/screenshots/call-example-karaf.svg)\n\nshow only one line with `strict`\n\n```graphviz\nstrict digraph G {\n  a -\u003e b [ label = \"foo\" ];\n  a -\u003e b [ label = \"bar\" ];\n}\n```\n\n#### Call Server\n\ncmd: `merry call -s`\n\n`merry` will read `manifest-map.json` and start to [http://localhost:3000](http://localhost:3000):\n\nexample: [https://phodal.github.io/merry/demo](https://phodal.github.io/merry/demo)\n\n## Todo\n\nTodo:\n\n - [x] Ant to Maven\n    - [x] dependencies convert\n    - [x] Checksum File\n    - [x] Unzip file\n    - [x] Parse Manifest\n - [x] Dup Search. search all jars and find not in nexus package\n - [x] POM generate dep graph\n    - [x] basic graph\n    - [x] go server\n    - [x] visual with circle [Hierarchical Edge Bundling](https://observablehq.com/@d3/hierarchical-edge-bundling)\n - [x] jar auto rename\n   - [x] use POM rename jar\n - [x] custom version\n   - [x] configurable\n   - [x] from jar to map.csv\n\nLicense\n---\n\n@ 2020 A [Phodal Huang](https://www.phodal.com)'s [Idea](http://github.com/phodal/ideas).  This code is distributed under the MPL license. See `LICENSE` in this directory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmodernizing%2Fmerry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmodernizing%2Fmerry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmodernizing%2Fmerry/lists"}