# multi-module-project

Published articles for multi-module-project.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How to use Koin Compiler in a Multimodule Project?

DevFeed: [How to use Koin Compiler in a Multimodule Project?](<https://devfeed.tech/articles/how-to-use-koin-compiler-in-a-multimodule-project-22969.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/how-to-use-koin-compiler-in-a-multimodule-project-6bd8e57d5e4b?source=rss----925561f2ecdf---4>)

Author: Gabriel Bronzatti Moro

Published: 2026-06-11T08:47:55Z

Content type: tutorial

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [koin](<https://devfeed.tech/topics/koin.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migrate](<https://devfeed.tech/tags/migrate.md>), [multi-module-project](<https://devfeed.tech/tags/multi-module-project.md>), [plugin](<https://devfeed.tech/tags/plugin.md>)

### AI overview

A tutorial on migrating a Compose Multiplatform multi-module project to the Koin Compiler. It covers the required Kotlin and Koin versions, configuring the compiler dependency through Gradle, creating a convention plugin, applying it to modules, and updating module initialization. The article reports replacing an approximately 80-line custom Gradle plugin with a simpler approximately 30-line setup while retaining compile-time safety through the K2 compiler.

### Source excerpt

Hey everyone! Today we're diving into how to use the Koin Compiler in a Compose Multiplatform multi-module project. In the previous article, we explored how to migrate a multimodule setup to Koin Annotations, using a convention Gradle plugin to move forward in small, safe steps. We'll follow that same approach diving deep into a project called MovieDB-App👋 A sticky note attached to a wall with the words "how to" written on it - Unsplash by walls_ioFirst step: Update your project, if necessary 🚀 Your project is eligible to support the Koin Compiler if it meets at least the following requirements: ✅ Kotlin 2.3.x or higher (K2 is required) ✅ Koin 4.2.x or higher Our sample project is using the following stack overview: 🤖 AGP: 9.1.0 🧩 Kotlin: 2.3.20 💉 Koin: 4.2.1 🏷 Koin Annotations: 2.3.1 Second step: Configure Koin compiler dependency Let's add our Koin Compiler dependency into the libs.versions.toml : #gradle/libs.versions.toml [versions] koin-compiler-plugin = "1.0.0" ... [libraries] koin-compiler-plugin = { group = "io.insert-koin", name = "koin-compiler-gradle-plugin", version.ref = "koin-compiler-plugin" } Now, let's run Gradle Sync 🐘 Our mission is to create a conventional plugin in our build-logic so we can migrate the project module by module, taking small and safe steps along the way. To achieve that let's add the koin compiler dependency as a depency of our build-logic: // build-logic/build.gradle.kts ... dependencies { implementation(libs.koin.compiler.plugin) } After syncing Gradle, it's time to create our conventional plugin: // build-logic/src/main/kotlin/plugins/KoinCompilerSetupPlugin.kt package plugins import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.the import org.koin.compiler.plugin.KoinGradleExtension // Ref: https://github.com/InsertKoinIO/koin-compiler-plugin/blob/main/docs/CASE_S

## Migrating from Koin DSL to Koin Annotations in a Multimodule Project: A Step-by-Step Guide

DevFeed: [Migrating from Koin DSL to Koin Annotations in a Multimodule Project: A Step-by-Step Guide](<https://devfeed.tech/articles/migrating-from-koin-dsl-to-koin-annotations-in-a-multimodule-project-a-step-by-step-guide-22975.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/migrating-from-koin-dsl-to-koin-annotations-in-a-multimodule-project-a-step-by-step-guide-a38a82f56e17?source=rss----925561f2ecdf---4>)

Author: Gabriel Bronzatti Moro

Published: 2026-04-24T07:18:23Z

Content type: tutorial

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>)

Tags: [code-generation](<https://devfeed.tech/tags/code-generation.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [guide](<https://devfeed.tech/tags/guide.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ksp](<https://devfeed.tech/tags/ksp.md>), [multi-module-project](<https://devfeed.tech/tags/multi-module-project.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A step-by-step tutorial for migrating a Compose Multiplatform multimodule project from Koin DSL to Koin Annotations. It covers adding Koin Annotations and KSP dependencies, creating a Gradle convention plugin, enabling the setup in a module, and replacing manual Koin definitions with annotation-based registration.

### Source excerpt

Hey friends 👋 Today we're going to explore how to migrate a Compose Multiplatform multi-module project from Koin DSL to Koin Annotations. We'll take a hands-on approach, diving deep into a project example built by the CodandoTV community. ⚠ In this tutorial, we won't cover the new Koin compiler. It's a significant improvement that simplifies much of the complexity we currently deal with when using KSP, but it deserves its own dedicated deep dive. A person's hand fitting a piece into a puzzle -- Unplash by rosssneddonFirst step: Setup Koin Annotations dependency First thing is let's make sure we are running the latest version of Koin. For that, visit our documentation. After that, let's add our Koin Annotations dependency into the libs.versions.toml . // gradle/libs.versions.toml [versions] koin-annotations = "<latest-version>" ksp = "<latest-version>" ... [libraries] ... com-google-devtools-ksp-gradle-plugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } koin-annotations = { module = "io.insert-koin:koin-annotations", version.ref = "koin-annotations" } koin-ksp-compiler = { module = "io.insert-koin:koin-ksp-compiler", version.ref = "koin-annotations" } KSP is also required, as it enables the code generation used by Koin Annotations. After adding the dependencies, run a Gradle sync to make them available to the project. Let's make sure we have the ksp plugin enabled in the root gradle project: // root/build.gradle.kts plugins { alias(libs.plugins.ksp) apply false ... } Let's head over to the build-logic folder and encapsulate all this setup inside a new Gradle convention plugin. To make this work, we need to add KSP as a library dependency: // build-logic/build.gradle.kts ... dependencies { implementation(libs.com.google.devtools.ksp.gradle.plugin) } Again, let's run Gradle sync 🐘 Second step: Create your conventional Gradle Plugin Inside of your build-logic , let's create a new custom plugin, we can call it com.st

## Applying a 3rd Party Gradle Plugin as a Composite Plugin

DevFeed: [Applying a 3rd Party Gradle Plugin as a Composite Plugin](<https://devfeed.tech/articles/applying-a-3rd-party-gradle-plugin-as-a-composite-plugin-24903.md>)

Original publisher: [Read original article](<https://blog.blundellapps.co.uk/applying-a-3rd-party-gradle-plugin-as-a-composite-plugin/>)

Author: blundell

Published: 2023-01-10T10:29:19Z

Content type: tutorial

Language: en

Sources: [Blundell](<https://devfeed.tech/sources/blundell.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Android Library](<https://devfeed.tech/topics/android-library.md>), [Template](<https://devfeed.tech/topics/template.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [build](<https://devfeed.tech/tags/build.md>), [composite-build](<https://devfeed.tech/tags/composite-build.md>), [dropbox](<https://devfeed.tech/tags/dropbox.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [intermediate](<https://devfeed.tech/tags/intermediate.md>), [intermediate-tutorial-androiddev-composite-build-gradle-plugin](<https://devfeed.tech/tags/intermediate-tutorial-androiddev-composite-build-gradle-plugin.md>), [library](<https://devfeed.tech/tags/library.md>), [multi-module-project](<https://devfeed.tech/tags/multi-module-project.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [project](<https://devfeed.tech/tags/project.md>), [reference](<https://devfeed.tech/tags/reference.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A tutorial on wrapping a third-party Gradle plugin in a custom plugin and including it through a Gradle composite build. Using Dropbox's Affected Module Detector as an example, it shows how a multi-module Android project can use the plugin's tasks while extending its behavior without forking or republishing it.

### Source excerpt

This post shows you how to wrap a 3rd party Gradle plugin in your own plugin, so that you can interactive with it programmatically. The post Applying a 3rd Party Gradle Plugin as a Composite Plugin first appeared on Blundell.

## Maven Project Structure

DevFeed: [Maven Project Structure](<https://devfeed.tech/articles/maven-project-structure-19362.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/maven-project-structure/>)

Author: Steve Hannah

Published: 2021-04-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Maven](<https://devfeed.tech/topics/maven.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Universal Windows Platform](<https://devfeed.tech/topics/uwp.md>), [ide](<https://devfeed.tech/topics/ide.md>)

Tags: [command-line](<https://devfeed.tech/tags/command-line.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [ios](<https://devfeed.tech/tags/ios.md>), [multi-module-project](<https://devfeed.tech/tags/multi-module-project.md>), [overview](<https://devfeed.tech/tags/overview.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

This tutorial explains the Maven project structure for Codename One applications. It covers the multi-module layout, platform-specific modules, the common module, CSS styling, dependency installation, IDE configuration, and command-line scripts for running, building, and generating platform projects.

### Source excerpt

As a follow-up to our recent announcement about transitioning to Maven, this post provides an overview of the new project structure.

## Mastering API Visibility in Kotlin

DevFeed: [Mastering API Visibility in Kotlin](<https://devfeed.tech/articles/mastering-api-visibility-in-kotlin-27073.md>)

Original publisher: [Read original article](<https://zsmb.co/mastering-api-visibility-in-kotlin/>)

Author: Márton Braun

Published: 2020-11-04T17:00:00Z

Content type: tutorial

Language: en

Sources: [zsmb.co](<https://devfeed.tech/sources/zsmb-co.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [API](<https://devfeed.tech/topics/api.md>), [Library](<https://devfeed.tech/topics/library.md>), [modules](<https://devfeed.tech/topics/modules.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [marton-braun](<https://devfeed.tech/tags/marton-braun.md>), [multi-module-project](<https://devfeed.tech/tags/multi-module-project.md>), [zsmb](<https://devfeed.tech/tags/zsmb.md>), [zsmb-co](<https://devfeed.tech/tags/zsmb-co.md>), [zsmb13](<https://devfeed.tech/tags/zsmb13.md>), [zsmbco](<https://devfeed.tech/tags/zsmbco.md>)

### AI overview

This article explains how minimizing API visibility in Kotlin libraries and multi-module projects reduces the declarations that must be maintained, limits compatibility concerns, and makes APIs easier to learn and use.

### Source excerpt

When designing a library, minimizing your API surface - the types, methods, properties, and functions you expose to the outside world - is a great idea. This doesn't apply to just libraries: it's a consideration you should make for every module in a multi-module project.

## Disabling Jetifier

DevFeed: [Disabling Jetifier](<https://devfeed.tech/articles/disabling-jetifier-25660.md>)

Original publisher: [Read original article](<https://adambennett.dev/2020/08/disabling-jetifier/>)

Published: 2020-08-14T16:56:57Z

Content type: tutorial

Language: en

Sources: [Posts on Adam Bennett](<https://devfeed.tech/sources/posts-on-adam-bennett.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [build performance](<https://devfeed.tech/topics/build-performance.md>), [ide](<https://devfeed.tech/topics/ide.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [blog](<https://devfeed.tech/tags/blog.md>), [build-performance](<https://devfeed.tech/tags/build-performance.md>), [career](<https://devfeed.tech/tags/career.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [finance](<https://devfeed.tech/tags/finance.md>), [functional](<https://devfeed.tech/tags/functional.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [growth](<https://devfeed.tech/tags/growth.md>), [java](<https://devfeed.tech/tags/java.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migration](<https://devfeed.tech/tags/migration.md>), [money](<https://devfeed.tech/tags/money.md>), [multi-module-project](<https://devfeed.tech/tags/multi-module-project.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [software](<https://devfeed.tech/tags/software.md>), [startups](<https://devfeed.tech/tags/startups.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [training](<https://devfeed.tech/tags/training.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This article explains how Jetifier converts legacy Android support-library references in third-party binaries to AndroidX equivalents. It describes the build and Gradle configuration-time costs of Jetifier and recommends using the Can I Drop Jetifier Gradle plugin to identify dependencies that must be updated or removed before disabling it.

### Source excerpt

Way back in the early-ish days of Android we used the support libraries, android.support, to backport certain features to different API levels. These days those libraries have been replaced by the AndroidX packages, announced at I/O 2018 - but their legacy lives on and many of the dependencies that your app consume may still depend on these android.support packages.