{"id":39938720,"url":"https://github.com/maveniverse/ipfs","last_synced_at":"2026-02-02T16:13:28.156Z","repository":{"id":332624893,"uuid":"1134425853","full_name":"maveniverse/ipfs","owner":"maveniverse","description":"Maven@IPFS integration","archived":false,"fork":false,"pushed_at":"2026-01-21T20:38:49.000Z","size":116,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-22T09:29:17.762Z","etag":null,"topics":["ipfs","maven"],"latest_commit_sha":null,"homepage":"https://ipfs.maveniverse.eu","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maveniverse.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-14T17:46:31.000Z","updated_at":"2026-01-21T20:38:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/maveniverse/ipfs","commit_stats":null,"previous_names":["maveniverse/ipfs"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/maveniverse/ipfs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maveniverse%2Fipfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maveniverse%2Fipfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maveniverse%2Fipfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maveniverse%2Fipfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maveniverse","download_url":"https://codeload.github.com/maveniverse/ipfs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maveniverse%2Fipfs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29015145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T14:58:54.169Z","status":"ssl_error","status_checked_at":"2026-02-02T14:58:51.285Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["ipfs","maven"],"created_at":"2026-01-18T19:03:04.141Z","updated_at":"2026-02-02T16:13:28.140Z","avatar_url":"https://github.com/maveniverse.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Maven @ IPFS\n\nAdds IPFS transport support to Maven Resolver. Load this suite by adding in project `.mvn/extensions.xml`, or if Maven 4 user, one can add user-wide extension with `~/.m2/extensions.xml`. This extension adds IPFS transport support to Maven 3/4:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cextensions\u003e\n    \u003cextension\u003e\n        \u003cgroupId\u003eeu.maveniverse.maven.ipfs\u003c/groupId\u003e\n        \u003cartifactId\u003eextension3\u003c/artifactId\u003e\n        \u003cversion\u003e${maveniverse.ipfs.version}\u003c/version\u003e\n    \u003c/extension\u003e\n\u003c/extensions\u003e\n```\n\nOnce extension loaded, remote repositories using IPFS can be declared with URLs in form of `ipfs:/name[/subpath]`. Parts of URI:\n* protocol is fixed, must be `ipfs:/`\n* `name` part may be: any IPNS resolvable name (key hash or DNSLink enabled domain) or CID\n* `/subpath` part is optional, may point to some sub-path of name\n\nExample setup (using Maven string representation of remote repositories in form of `id::url`) is shown at https://ipfs.maveniverse.eu/\n* the `maveniverse-ipfs::ipfs:/ipfs.maveniverse.eu/repository-ipfs` contains all IPFS related artifacts to resolve `com.github.ipfs:java-ipfs-http-client:1.4.4`\n* the `maveniverse-releases::ipfs:/ipfs.maveniverse.eu/releases` is example repository containing MIMA release\n\nNote: same IPFS repositories content may be reached via IPFS HTTP Gateways using plain Maven HTTP transport as `maveniverse-ipfs::https://ipfs.io/ipns/ipfs.maveniverse.eu/repository-ipfs`. In this case you would use public goods, so it is recommended to use\nown node + IPFS transport instead.\n\n## IPFS node\n\nBy default, transport will connect to IPFS node running on localhost. It is recommended for users to run their own node. Simplest solution is offered by [IPFS Desktop](https://docs.ipfs.tech/install/ipfs-desktop/).\n\n## Consuming\n\nFor consumption nothing special is needed, just a locally running IPFS node. Recommended setup (aside of just installing and starting up node, either as daemon or via IPFS Desktop):\n* Enable IPNS over PubSub (daemon `--enable-namesys-pubsub` daemon parameter)\n* Note: in case of using IPFS in data centers (like GH CI is), recommended way to init node before starting is `ipfs init --profile server`. See [documentation](https://docs.ipfs.tech/how-to/command-line-quick-start/).\n\n## Deploying\n\nThe deployment part expectation is that your local node has _same named key as `name` you use in repository stanza_. So, for examples above, node publishing to must have a key with name `ipfs.maveniverse.eu`. In case same name space has multiple publishers, the private key should be shared (in some sane, discreet way) among publishers. Ideally, to make publishing more human friendly, if the `name` is a domain, publishing the domain via [DNSLink](https://dnslink.dev/) is recommended. In this case you have human friendly `domain -\u003e IPNS -\u003e IPFS CID` indirection in place. Trust is derived similarly as in case of Maven publishing: owner of the domain tells the IPNS, and publishing to given IPNS is possible only in possesion of `name` named private key. Impostors may publish same named artifacts, but they are never able to publish those \"as you would\", as private key protects you from this happening. In case key is compromised, just generate new private key, and update your DNSLink record with it.\n\n## Requirements\n\nRun time requirement:\n* Java 11+\n* Maven 3.9+\n\nBuild time requirements:\n* Java 21\n* Maven 3.9.12+\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaveniverse%2Fipfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaveniverse%2Fipfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaveniverse%2Fipfs/lists"}