{"id":16012896,"url":"https://github.com/ckipp01/exists","last_synced_at":"2026-02-12T22:32:11.638Z","repository":{"id":44728200,"uuid":"443410618","full_name":"ckipp01/exists","owner":"ckipp01","description":"A little tool to tell you if a maven artifact exists or to help you find out what does exist.","archived":false,"fork":false,"pushed_at":"2022-01-28T12:09:55.000Z","size":52,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-15T08:53:04.414Z","etag":null,"topics":["jvm","maven-repository","scala","scala-cli"],"latest_commit_sha":null,"homepage":"","language":"Scala","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/ckipp01.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":"2021-12-31T19:07:44.000Z","updated_at":"2023-12-14T22:23:36.000Z","dependencies_parsed_at":"2022-08-30T02:11:40.216Z","dependency_job_id":null,"html_url":"https://github.com/ckipp01/exists","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ckipp01/exists","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckipp01%2Fexists","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckipp01%2Fexists/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckipp01%2Fexists/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckipp01%2Fexists/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ckipp01","download_url":"https://codeload.github.com/ckipp01/exists/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckipp01%2Fexists/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29383919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T22:07:52.078Z","status":"ssl_error","status_checked_at":"2026-02-12T22:07:49.026Z","response_time":55,"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":["jvm","maven-repository","scala","scala-cli"],"created_at":"2024-10-08T14:22:14.186Z","updated_at":"2026-02-12T22:32:11.624Z","avatar_url":"https://github.com/ckipp01.png","language":"Scala","readme":"# exists\n\nWhen you just want to know what exists.\n\n## What does this do?\n\n`exists` will tell you if a specific artifact exists or it will give you all the\npossibilities that _might_ match what you're looking for. As a bonus, if you\nlooking for versions it'll also tell you if there's a missing\n`maven-metadata.xml` file, what the latest version in the metadata file is, and\nalso show you if that version doesn't actually match what the latest version\n_really_ is.\n\nThis currently works with Maven Central, Sonatype releases, Sonatype snapshots,\nand Sonatype Nexus repository OSS installations that you may be using.\n\nIt really doesn't do too much.\n\n```\nUsage: exists [options] [org[:name[:version]]]\n\nWhen you just want to know what exists.\nEither I'll find it or complete it.\n\nOptions:\n\n -h, --help        shows what you're looking at\n -c, --credentials credentials for the passed in withRepository\n                   ex. username:password\n -r, --repository  specify a repository\n                   ex. [central,sontaype:snapshots,sonatype:url]\n```\n\n## Why'd you build this?\n\nThe short version was this was built out of annoyance and me going down a rabbit\nhole to understand why [Coursier](https://github.com/coursier/coursier) wouldn't\ncomplete snapshots or artifacts from my work's self-hosted Nexus.\n\nThe longer version will have to wait until I better understand a few more things\nand write them down for you to hopefully enjoy and also have a better\nunderstanding of a few of the following:\n\n  - What's the difference between release and snapshot repository listings?\n  - Why doesn't my self-hosted nexus behave just like maven central?\n  - Why is supposed to keep this `maven-metadata.xml` up to date anyways?\n  - Why is my `maven-metadata.xml` file way out of date on Sonatype releases?\n\nSo many fun questions.\n\nFor now, feel free to use this in a very similar way you'd use `cs complete\n\u003cartifact\u003e`, but also having it work on sbt plugin published to maven central,\nsnapshots, and your self-hosted Sonatype nexus.\n\nO, also I got to play with [`scala-cli`](https://scala-cli.virtuslab.org/) for\nthis, which was a good learning experience.\n\n## Using it\n\nTo build it locally clone this repo and do a `scala-cli package . -o exists -f`.\n\nUse it for snapshots\n```\n❯ ./exists -r sonatype:snapshots org.scalameta:metals_2.12:\nFound up until: org.scalameta:metals_2.12\nLatest version according to metadata: 0.10.9+49-60d74a51-SNAPSHOT\nLast updated according to metadata: 2021-11-18T20:23:02\nExact match not found, so here are the 10 newest possiblities:\n 0.11.0+27-c77d9714-SNAPSHOT\n 0.11.0+25-7cc1bc13-SNAPSHOT\n 0.11.0+23-bacbde61-SNAPSHOT\n 0.11.0+21-8e662d9c-SNAPSHOT\n 0.11.0+19-d964693d-SNAPSHOT\n 0.11.0+17-69a43f63-SNAPSHOT\n 0.11.0+15-ea6ea86c-SNAPSHOT\n 0.11.0+13-b6814655-SNAPSHOT\n 0.11.0+11-5898e3b5-SNAPSHOT\n 0.11.0+10-41d3108e-SNAPSHOT\n```\n\nUse it for sbt plugins\n```\n❯ ./exists org.wartremover:sbt-wartremover_2.12_1.0:\nFound up until: org.wartremover:sbt-wartremover_2.12_1.0\nNo mavemen-metadata.xml file was found for this artifact\nExact match not found, so here are the 10 newest possiblities:\n 2.4.9\n 2.4.8\n 2.4.7\n 2.4.6\n 2.4.5\n 2.4.4\n 2.4.3\n 2.4.2\n 2.4.16\n 2.4.15\n```\n\nUse it for your custom nexus\n```sh\n❯ ./exists -r $NEXUS_URL -c $NEXUS_USERNAME:$NEXUS_PASSWORD my.org:\nFound up until: my.org\nExact match not found, so here are the 3 newest possiblities:\n  app1_2.13\n  app1_3\n  app2_3\n```\n\n## Don't\n\nUse this in a serious capacity or as a library. Use Coursier instead. Nothing is\nbeing cached here, so you're making a whole bunch of requests since under the\nhood we are scraping html/xml. Just use Coursier for anything serious.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fckipp01%2Fexists","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fckipp01%2Fexists","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fckipp01%2Fexists/lists"}