{"id":20741086,"url":"https://github.com/com-lihaoyi/mill-moduledefs","last_synced_at":"2025-08-25T14:04:32.866Z","repository":{"id":62275836,"uuid":"551319819","full_name":"com-lihaoyi/mill-moduledefs","owner":"com-lihaoyi","description":"Scalac compiler plugin to support Mill modules","archived":false,"fork":false,"pushed_at":"2025-07-08T00:40:08.000Z","size":84,"stargazers_count":7,"open_issues_count":3,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-08T02:46:41.267Z","etag":null,"topics":["mill","scala","scalac-plugin"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/com-lihaoyi.png","metadata":{"files":{"readme":"Readme.adoc","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["lihaoyi","lefou"]}},"created_at":"2022-10-14T07:24:45.000Z","updated_at":"2025-07-08T00:40:12.000Z","dependencies_parsed_at":"2024-02-27T10:15:29.413Z","dependency_job_id":"4abf1336-85dc-40ae-92df-d5b2841e9d1c","html_url":"https://github.com/com-lihaoyi/mill-moduledefs","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/com-lihaoyi/mill-moduledefs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/com-lihaoyi%2Fmill-moduledefs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/com-lihaoyi%2Fmill-moduledefs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/com-lihaoyi%2Fmill-moduledefs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/com-lihaoyi%2Fmill-moduledefs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/com-lihaoyi","download_url":"https://codeload.github.com/com-lihaoyi/mill-moduledefs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/com-lihaoyi%2Fmill-moduledefs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272077690,"owners_count":24869288,"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-25T02:00:12.092Z","response_time":1107,"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":["mill","scala","scalac-plugin"],"created_at":"2024-11-17T06:33:35.330Z","updated_at":"2025-08-25T14:04:32.788Z","avatar_url":"https://github.com/com-lihaoyi.png","language":"Scala","funding_links":["https://github.com/sponsors/lihaoyi","https://github.com/sponsors/lefou"],"categories":[],"sub_categories":[],"readme":"= mill-moduledefs\n:toc-placement: preamble\n:toc:\n:version: 0.11.3-M5\n\nA Scalac compiler plugin to support Mill modules.\n\n== About\n\nThe Mill build tool module structure is highly tied to the organizational structure of the Scala programming language.\nProject modules are modelled as Scala ``object``s, Module targets are modelled as Scala ``def``s.\n\nMill targets are also modelled as free applicatives, which among other things makes the Mill task graph introspectable. To hide some boilerplate code needed to nicely write tasks like ``def``s, Mill uses some Scala macros and a Scalac compiler plugin.\n\nIn this project, you'll find the compiler plugin and some shared code.\n\n== Usage\n\nArtifacts of this project are released to Maven Central.\n\n.Mill\n[source,scala,subs=\"attributes,verbatim\"]\n----\ndef ivyDeps = Agg(\n  ivy\"com.lihaoyi::mill-moduledefs:{version}\"\n)\n// Enable the plugin in the Scala compiler\ndef scalacPluginIvyDeps = Agg(\n  ivy\"com.lihaoyi:::scalac-mill-moduledefs-plugin:{version}\"\n)\n----\n\n// TODO: sbt setup\n\n== Project Layout\n\nThis project contains two modules:\n\n* `moduledefs` - Some shared code to be used in the Mill classpath. The `artifactName` is `mill-moduledefs`.\n* `moduledefs/plugin` - A Scalac compiler plugin to be used when compiling Mill projects. The `artifactName` is `scalac-mill-moduledefs-plugin`.\n\n== Development and Releases\n\nThis code is expected to change rarely.\n\nIt should be especially kept stable within the same Mill major version.\n\n=== Publishing\n\nPublishing is automated via GitHub Actions and implemented in the `publishToSonatype` command.\n\n[source,scala]\n----\ndef publishToSonatype(\n    sonatypeCreds: String,\n    gpgArgs: String = PublishModule.defaultGpgArgs.mkString(\",\"),\n    dryRun: Boolean = false,\n    artifactsFile: Option[String] = None\n): Command[Unit]\n----\n\n**You need to update the version manually, before creatign the git tag!**\n\nAll git tags are automatically published. The tag should reflect the version number.\n\n\n=== Re-publish for a new Scala Release\n:example-version: 0.10.9\n:example-scala-version: 2.13.10\n\nThe most frequently expected changes are releases for newer Scala version.\nThis is especially needed, as compiler plugins are tied to the exact Scala compiler version.\n\nHence, this build aims to be flexible enough, to release an already tagged version for newer Scalac releases after the fact.\n\nAs an example, to release an already published version `{example-version}` for a new Scala version `{example-scala-version}`, follow these steps:\n\n. Create a branch `release-{example-version}` from the git tag `{example-version}`.\n\n. Add the new Scala version to the build setup. Make sure you don't change the actual code, so it stays compatible to the original tag.\n\n. Add a file `PUBLISH_ONLY` containing a selector for the artifacts to publish. If you need more than one selector, place each on a new line.\n+\n.Example file `PUBLISH_ONLY`\n----\nmoduledefs.plugin[2.13.10].publishArtifacts\n----\n\n. Commit your changes.\n\n. Tag your commit with `{example-version}-for-{example-scala-version}`. This will trigger the `publish-sonatype` workflow in GHA.\n\n. If appropriate, update the Readme/Changelog in the `main` branch.\n\n\n== License\n\nThis project is published under the https://mit-license.org/[MIT License].\n\n== Changelog\n\n[#0-11-3-M5]\n=== 0.11.3-M5\n\n* Added support for Scala 3.6.3 and 3.6.4\n\n[#0-11-1]\n=== 0.11.1 - 2024-10-11\n\n* Copy doc comment to module class in Scala 3\n\n* 2024-10-20: Published for Scala 2.13.15\n\n[#0-11-0]\n=== 0.11.0 - 2024-10-04\n\n* Support for Scala 3\n* `T{}` in error message renamed to `Task{}`\n* Support `.mill` filesystem extension\n\n[#0-11-0-M1]\n=== 0.11.0-M1 - 2024-08-22\n\n* Cross build to Scala 3.5.0\n\n[#0-10-9]\n=== 0.10.9 - 2022-11-10\n\nFirst stable release from this repository. No feature additions and removals since release `0.10.8` from the Mill repository.\n\n* 2023-06-03: Published for Scala 2.13.11\n* 2023-09-07: Published for Scala 2.13.12\n* 2024-02-27: Published for Scala 2.13.13\n* 2024-05-22: Published for Scala 2.13.14\n\n=== 0.10.9-alpha-1 - 2022-10-17\n\nInitial release from this repository. Intended for testing only.\n\n=== Older Releases\n\nOlder versions of this project were developed in the Mill git repository and were packaged as ordinary Scala artifact `mill-moduledefs` (without the full Scala version suffix). Refer to  https://github.com/com-lihaoyi/mill/issues/2035[issue #2035], to learn why we split the projects.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcom-lihaoyi%2Fmill-moduledefs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcom-lihaoyi%2Fmill-moduledefs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcom-lihaoyi%2Fmill-moduledefs/lists"}