{"id":17280672,"url":"https://github.com/lolgab/mill-mima","last_synced_at":"2026-02-13T21:14:40.637Z","repository":{"id":40345956,"uuid":"386373288","full_name":"lolgab/mill-mima","owner":"lolgab","description":"MiMa Plugin for Mill","archived":false,"fork":false,"pushed_at":"2025-10-15T17:46:13.000Z","size":187,"stargazers_count":17,"open_issues_count":3,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-16T16:29:17.069Z","etag":null,"topics":["mill","mill-plugin"],"latest_commit_sha":null,"homepage":"https://lolgab.github.io/mill-mima/","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/lolgab.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":"2021-07-15T17:30:29.000Z","updated_at":"2025-10-15T17:46:17.000Z","dependencies_parsed_at":"2023-11-18T00:53:56.933Z","dependency_job_id":"62f069e5-6bf5-46dd-acf6-36bab84411cf","html_url":"https://github.com/lolgab/mill-mima","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/lolgab/mill-mima","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lolgab%2Fmill-mima","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lolgab%2Fmill-mima/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lolgab%2Fmill-mima/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lolgab%2Fmill-mima/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lolgab","download_url":"https://codeload.github.com/lolgab/mill-mima/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lolgab%2Fmill-mima/sbom","scorecard":{"id":597771,"data":{"date":"2025-08-11","repo":{"name":"github.com/lolgab/mill-mima","commit":"b479d70846da0004ab00fc9b40074b56b6182393"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.3,"checks":[{"name":"Code-Review","score":5,"reason":"Found 17/30 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":9,"reason":"11 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/dep.yml:1","Warn: no topLevel permission defined: .github/workflows/scalafmt.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dep.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/dep.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dep.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/dep.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dep.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/dep.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dep.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/lolgab/mill-mima/dep.yml/main?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   5 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T23:35:59.658Z","repository_id":40345956,"created_at":"2025-08-20T23:35:59.658Z","updated_at":"2025-08-20T23:35:59.658Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29417790,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"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":["mill","mill-plugin"],"created_at":"2024-10-15T09:21:28.469Z","updated_at":"2026-02-13T21:14:40.630Z","avatar_url":"https://github.com/lolgab.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MiMa Mill Plugin\n\nPort of the [MiMa Sbt Plugin](https://github.com/lightbend/mima)\n\n## Getting Started\n\nAfter importing it in the `build.sc` file:\n\n```scala\nimport $ivy.`com.github.lolgab::mill-mima::x.y.z`\nimport com.github.lolgab.mill.mima._\n```\n\nthis plugin can be mixed in a `ScalaModule with PublishModule` defining the `mimaPreviousVersions`:\n\n```scala\nobject module extends ScalaModule with PublishModule with Mima {\n  def mimaPreviousVersions = Seq(\"1.0.0\", \"1.5.0\")\n\n  // ... other settings\n}\n```\n\n## Configuration\n\n### mimaCheckDirection\n\nThe required direction of binary compatibility can be set in two ways:\n\n- By setting the `MIMA_CHECK_DIRECTION` environment variable when running Mill\n  ```\n  MIMA_CHECK_DIRECTION=forward mill __.mimaReportBinaryIssues\n  ```\n\n  The possible values are `backward` (default), `forward` and `both`.\n\n  This is useful when you want to check for different directions at the same time,\n  for example when you might want to have separate CI checks for forward and\n  backward compatibility to evaluate if changes introduce source compatibilities.\n\n- By overriding `mimaCheckDirection`:\n\n  ```scala\n  override def mimaCheckDirection = CheckDirection.Both\n  ```\n\n  The possible values are `CheckDirection.Backward` (default), `CheckDirection/Forward` and `CheckDirection.Both`.\n\n  This is useful when the setting is static and you want to keep the setting in\n  your `build.sc` file.\n\n### mimaBinaryIssueFilters\n\nWhen MiMa reports a binary incompatibility that you consider acceptable, such as a change in an internal package,\nyou need to use the `mimaBinaryIssueFilters` setting to filter it out and get `mimaReportBinaryIssues` to\npass, like so:\n\n```scala\nimport com.github.lolgab.mill.mima._\n\nobject mylibrary extends ScalaModule with PublishModule with Mima {\n  override def mimaBinaryIssueFilters = super.mimaBinaryIssueFilters() ++ Seq(\n    ProblemFilter.exclude[MissingClassProblem](\"com.example.mylibrary.internal.Foo\")\n  )\n\n  // ... other settings\n}\n```\n\nYou may also use wildcards in the package and/or the top `Problem` parent type for such situations:\n\n```scala\nimport com.github.lolgab.mill.mima._\n\noverride def mimaBinaryIssueFilters = super.mimaBinaryIssueFilters() ++ Seq(\n  ProblemFilter.exclude[MissingClassProblem](\"com.example.mylibrary.internal.*\")\n)\n```\n\n### mimaExcludeAnnotations\n\nThe fully-qualified class names of annotations that exclude parts of the API from problem checking.\n\n```scala\nimport com.github.lolgab.mill.mima._\n\nobject mylibrary extends ScalaModule with PublishModule with Mima {\n  override def mimaExcludeAnnotations = Seq(\n    Seq(\"mima.annotation.exclude\")\n  )\n  // ... other settings\n}\n```\n\n### mimaPreviousArtifacts\n\nIf your previous artifacts have a different `groupId` or `artifactId` you can check against them\nusing `mimaPreviousArtifacts` instead of `millPreviousVersions` (since `millPreviousVersions`\nassumes the same `groupId` and `artifactId`):\n\n```scala\ndef mimaPreviousArtifacts = Agg(\n  ivy\"my_group_id::module:my_previous_version\"\n)\n```\n\n### mimaCurrentArtifact\n\nThe `PathRef` to the actual artifact that is being checked for binary compatibility. Defaults to use the result of the `jar` target.\n\n_Up until version `0.0.24`, this was implemented as `compile().classes`, for compatibility to the sbt plugin._\n\n```scala\ndef mimaCurrentArtifact = T {\n  compile().classes\n}\n```\n\n### mimaBackwardIssueFilters\n\nFilters to apply to binary issues found grouped by version of a module\nchecked against. These filters only apply to backward compatibility\nchecking.\n\nSignature: \n\n```scala\ndef mimaBackwardIssueFilters: T[Map[String, Seq[ProblemFilter]]]\n```\n\n### mimaForwardIssueFilters\n\nFilters to apply to binary issues found grouped by version of a module\nchecked against. These filters only apply to forward compatibility\nchecking.\n\nSignature: \n\n```scala\ndef mimaForwardIssueFilters: T[Map[String, Seq[ProblemFilter]]]\n```\n\n### IncompatibleSignatureProblem\n\nMost MiMa checks (`DirectMissingMethod`,`IncompatibleResultType`, `IncompatibleMethType`, etc) are against the \"method descriptor\", which is the \"raw\" type signature, without any information about generic parameters.\n\nThe `IncompatibleSignature` check compares the `Signature`, which includes the full signature including generic parameters. This can catch real incompatibilities, but also sometimes triggers for a change in generics that would not in fact cause problems at run time. Notably, it will warn when updating your project to scala 2.12.9+ or 2.13.1+, see [this issue](https://github.com/lightbend/mima/issues/423) for details.\n\nYou can opt-in to this check by setting:\n\n```scala\ndef mimaReportSignatureProblems = true\n```\n\n## Changelog\n\n### 0.1.1\n\n- Support MiMa on `JavaModule`\n- Make `Mima` work on modules that are not `PublishModule`s\n\n### 0.1.0\n\nAdd `mimaCurrentArtifact` configuration\n\n### 0.0.24\n\n- Update MiMa to `1.1.3`\n\n### 0.0.23\n\n- Support Mill `0.11.0`\n\n### 0.0.22\n\n- Support Mill `0.11.0-M11`\n\n### 0.0.21\n\n- Support Mill `0.11.0-M10`\n\n### 0.0.20\n\n- Support Mill `0.11.0-M9`\n\n### 0.0.19\n\n- Support Mill `0.11.0-M8`\n\n### 0.0.18\n\n- Add support for `MIMA_CHECK_DIRECTION` environment variable\n\n### 0.0.17\n\n- Update MiMa to `1.1.2`\n- Support Mill `0.11.0-M7`\n\n### 0.0.13\n\n- Update MiMa to `1.1.1`\n\n### 0.0.12\n\n- Add `ReadWriter`s for `CheckDirection`\n\n### 0.0.10\n\n- Run Mima in a separate classloader.\n  Now `Problem`s are mirrored in the `com.github.lolgab.mill.mima` package\n  instead and the `com.typesafe.tools.mima.core` package\n\n### 0.0.9\n\n- Support Mill 0.10\n\n### 0.0.8\n\n- Correct hint in error message to match plugin's ProblemFilter class\n\n### 0.0.7\n\n- Support Mill 0.10.0-M5\n\n### 0.0.6\n\n- Support Mill 0.10.0-M4\n\n### 0.0.5\n\n- Add `mimaExcludeAnnotations` target\n- Bump MiMa to `1.0.1`\n- Fix `mill-scalalib` dependency to be in `compileIvyDeps`\n\n### 0.0.4\n\n- Add support to resolve multiple previous artifacts\n- Add `mimaPreviousVersions` target\n- Redefine `prepareOffline` to include MiMa artifacts\n\n### 0.0.3\n\n- Support problem filters\n\n### 0.0.2\n\n- Change artifact name from `mima_mill0.9` to `mill-mima_mill0.9`\n\n### 0.0.1\n\nFirst release\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flolgab%2Fmill-mima","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flolgab%2Fmill-mima","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flolgab%2Fmill-mima/lists"}