{"id":19348045,"url":"https://github.com/korlibs/kproject","last_synced_at":"2025-04-23T05:32:54.710Z","repository":{"id":61422005,"uuid":"549637301","full_name":"korlibs/kproject","owner":"korlibs","description":"YAML-based source-based kotlin module descriptors","archived":false,"fork":false,"pushed_at":"2023-09-29T17:09:27.000Z","size":343,"stargazers_count":32,"open_issues_count":9,"forks_count":2,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-02T09:01:29.152Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/korlibs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2022-10-11T13:54:13.000Z","updated_at":"2024-01-24T07:39:50.000Z","dependencies_parsed_at":"2023-02-16T17:16:36.331Z","dependency_job_id":"8cf02c19-4a94-4609-a4d9-82bdb5a8ec62","html_url":"https://github.com/korlibs/kproject","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/korlibs%2Fkproject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/korlibs%2Fkproject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/korlibs%2Fkproject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/korlibs%2Fkproject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/korlibs","download_url":"https://codeload.github.com/korlibs/kproject/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250379112,"owners_count":21420826,"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","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":[],"created_at":"2024-11-10T04:18:52.268Z","updated_at":"2025-04-23T05:32:54.292Z","avatar_url":"https://github.com/korlibs.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kproject - Liberate your Kotlin projects\n\nYAML-based source-based kotlin module descriptors that runs on top of gradle.\n\n## [Full documentation \u0026 presentation](http://docs.korge.org/kproject/)\n\n## Define your kotlin multiplatform multi-module projects like this:\n\n### `deps.kproject.yml`\n\n```\nplugins:\n- serialization\ndependencies:\n- ./libs/kds\n- https://github.com/korlibs/kproject/tree/54f73b01cea9cb2e8368176ac45f2fca948e57db/modules/adder\n- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4\n```\n\n## You can create a kproject that uses other git project as source\n\n### `kproject.yml`\n\n```\nsrc: https://github.com/Quillraven/Fleks/tree/c24925091ced418bf045ba0672734addaab573d8/src\nplugins:\n- serialization\n```\n\n## No more maven central publishing, distributed sources\n\nWith a single `settings.gradle.kts` and `kproject.yml`\nfiles you can reference any version and any project hosted at github or maven repositories\nand compile to any supported platform on the fly.\n\n## Super simple to use:\n\nJust put this code in your `settings.gradle.kts`:\n\n```kotlin\npluginManagement { repositories {  mavenLocal(); mavenCentral(); google(); gradlePluginPortal()  }  }\n\nplugins {\n    id(\"com.soywiz.kproject.settings\") version \"0.2.1\"\n}\n```\n\nRun gradle without tasks, and start editing your automatically-generated `kproject.yml` file.\n\n## What solves\n\nPublishing KMP on maven central is a tedious process, that also requires uploading and downloading a lot of files.\nIt requires a lot of boilerplate and it is not really decentealized. Due to those amount of files that are big in size, publishing new versions is usually delayed\nto avoid saturating central, also if the library author publishes one library without a target you need,\nyou won't be able to support that target, even if the code itself supports it.\nWith this approach you simplify your projects to something similar to node, haxe or swift.\nYou can bring sources from other repos, and define dependencies between sources easily.\n\n## How it works\n\nI did an approach in the past to include sourcecode projects withing gradle.\nBut the problem was that I could not create new modules, but only add new source folders\nto other modules. So they could not be compiled in parallel and were being recompiled if the module was dirty.\n\nTo fix that, this project wss created.\nKproject injects in the settings.gradle,\nin a moment where we can define new modules.\nKproject locates a kproject.yml file,\nparses it and resolves all the modules needed\nfor the project. And then creates gradle modules\nbased on those; local sources, maven artifcats,\nor git-based sources, or remote files\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkorlibs%2Fkproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkorlibs%2Fkproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkorlibs%2Fkproject/lists"}