{"id":49187592,"url":"https://github.com/mvnpm/mvnpm","last_synced_at":"2026-05-18T11:01:08.159Z","repository":{"id":188884830,"uuid":"549391749","full_name":"mvnpm/mvnpm","owner":"mvnpm","description":"Use npm like any other Maven/Gradle dependency...","archived":false,"fork":false,"pushed_at":"2026-05-15T09:00:22.000Z","size":2550,"stargazers_count":31,"open_issues_count":4,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-15T10:53:57.832Z","etag":null,"topics":["gradle","java","maven","npm"],"latest_commit_sha":null,"homepage":"https://mvnpm.org/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mvnpm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-10-11T05:44:31.000Z","updated_at":"2026-05-15T09:00:21.000Z","dependencies_parsed_at":"2023-10-05T06:27:23.232Z","dependency_job_id":"764c8a82-098d-4934-a307-b00d0d81fca0","html_url":"https://github.com/mvnpm/mvnpm","commit_stats":null,"previous_names":["mvnpm/mvnpm"],"tags_count":75,"template":false,"template_full_name":null,"purl":"pkg:github/mvnpm/mvnpm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvnpm%2Fmvnpm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvnpm%2Fmvnpm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvnpm%2Fmvnpm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvnpm%2Fmvnpm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mvnpm","download_url":"https://codeload.github.com/mvnpm/mvnpm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvnpm%2Fmvnpm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33175835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"ssl_error","status_checked_at":"2026-05-18T09:27:28.300Z","response_time":71,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["gradle","java","maven","npm"],"created_at":"2026-04-23T05:01:20.686Z","updated_at":"2026-05-18T11:01:08.110Z","avatar_url":"https://github.com/mvnpm.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"brand/logo-reversed.svg\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"brand/logo.svg\"\u003e\n  \u003cimg alt=\"mvnpm\" src=\"brand/logo.svg\" width=\"400\"\u003e\n\u003c/picture\u003e\n\n## Use NPM packages as Maven/Gradle dependencies\n\n**mvnpm** lets you consume [NPM Registry](https://www.npmjs.com/) packages directly from your Java build tool.\n\n**Maven**\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.mvnpm\u003c/groupId\u003e\n    \u003cartifactId\u003e{package-name}\u003c/artifactId\u003e\n    \u003cversion\u003e{package-version}\u003c/version\u003e\n    \u003cscope\u003e{runtime/provided}\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\n**Gradle**\n\n```groovy\nimplementation 'org.mvnpm:{package-name}:{package-version}'\n// or compileOnly for bundled usage\n```\n\nFor scoped packages, use `org.mvnpm.at.{namespace}` as groupId\n(e.g. `@hotwired/stimulus` becomes `org.mvnpm.at.hotwired:stimulus`).\n\n## Ways to consume\n\n- Bundled and served with the [Quarkus Web Bundler](https://docs.quarkiverse.io/quarkus-web-bundler/dev/index.html) (scope `provided`)\n- Served directly using [importmaps](https://github.com/mvnpm/importmap) (scope `runtime`)\n- Bundled with [esbuild-java](https://github.com/mvnpm/esbuild-java)\n- As a drop-in [WebJars](https://www.webjars.org/) replacement\n\n## Syncing a missing package\n\nMost popular packages are already on Maven Central. Check the \"Maven Central\" badge on the [Browse page](https://mvnpm.org/) to verify.\n\n- Click the \"Maven Central\" badge to trigger a sync.\n- Or configure the [fallback repository](#configuring-the-fallback-repository) to fetch missing packages automatically.\n\nOnce a package is synced, mvnpm automatically syncs new versions as they're published on NPM. Tools like Dependabot and Renovate can then propose updates in your pull requests.\n\n\u003e **Use Maven Central for production builds.** The fallback repository is for development and initial sync only.\n\n## Fallback repository mode\n\n![Diagram showing how mvnpm converts NPM packages to Maven artifacts and syncs them to Maven Central](src/main/resources/public/static/how-does-mvnpm-work.svg)\n\n1. Your build requests a package from Maven Central.\n2. If it's not there yet, the request falls through to the mvnpm repository.\n3. mvnpm fetches the package from NPM and converts it into a Maven artifact (JAR + POM).\n4. The artifact is returned to your build immediately and synced to Maven Central in the background.\n\n## Configuring the fallback repository\n\n**Maven**\n\nAdd to your `~/.m2/settings.xml`:\n\n```xml\n\u003csettings\u003e\n    \u003cprofiles\u003e\n        \u003cprofile\u003e\n            \u003cid\u003emvnpm-repo\u003c/id\u003e\n            \u003crepositories\u003e\n                \u003crepository\u003e\n                    \u003cid\u003ecentral\u003c/id\u003e\n                    \u003cname\u003ecentral\u003c/name\u003e\n                    \u003curl\u003ehttps://repo.maven.apache.org/maven2\u003c/url\u003e\n                \u003c/repository\u003e\n                \u003crepository\u003e\n                    \u003csnapshots\u003e\n                        \u003cenabled\u003efalse\u003c/enabled\u003e\n                    \u003c/snapshots\u003e\n                    \u003cid\u003emvnpm.org\u003c/id\u003e\n                    \u003cname\u003emvnpm\u003c/name\u003e\n                    \u003curl\u003ehttps://repo.mvnpm.org/maven2\u003c/url\u003e\n                \u003c/repository\u003e\n            \u003c/repositories\u003e\n        \u003c/profile\u003e\n    \u003c/profiles\u003e\n\n    \u003cactiveProfiles\u003e\n        \u003cactiveProfile\u003emvnpm-repo\u003c/activeProfile\u003e\n    \u003c/activeProfiles\u003e\n\u003c/settings\u003e\n```\n\n**Gradle**\n\nAdd to your `build.gradle`. Since Gradle honors the repository order, declare it after `mavenCentral()` so it's only used as fallback. Content filtering avoids unnecessary lookups:\n\n```groovy\nrepositories {\n    mavenCentral()\n    maven {\n        name = \"mvnpm\"\n        url = uri(\"https://repo.mvnpm.org/maven2\")\n        content {\n            includeGroupByRegex \"org\\\\.mvnpm.*\"\n        }\n    }\n}\n```\n\n## Locking dependencies\n\n**Maven**\n\nThe [mvnpm locker Maven Plugin](https://github.com/mvnpm/locker) locks your `org.mvnpm` and `org.webjars` dependency versions, similar to `package-lock.json` or `yarn.lock`.\n\n**Gradle**\n\nEnable native dependency locking in your `build.gradle`:\n\n```groovy\ndependencyLocking {\n    lockAllConfigurations()\n}\n```\n\nThen run `gradle dependencies --write-locks` to generate the lockfile.\n\n## Learn more\n\n- [Getting Started](https://mvnpm.org/doc/) - full documentation\n- [About mvnpm](https://mvnpm.org/about/) - the story, ecosystem, and vision\n- [Browse packages](https://mvnpm.org/) - search and explore NPM packages as Maven dependencies\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmvnpm%2Fmvnpm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmvnpm%2Fmvnpm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmvnpm%2Fmvnpm/lists"}