-
Notifications
You must be signed in to change notification settings - Fork 7
Build System And Tooling
This document covers the Gradle-based build system configuration, multiplatform setup, and development tooling for the Effective Office project. It focuses on the build configuration, plugin management, dependency resolution, and platform-specific build targets.
For information about project structure and module organization, see Project Structure. For deployment configuration, see Docker Deployment.
The Effective Office project uses Gradle as its primary build system with Kotlin DSL configuration. The build system supports multiple targets including a Spring Boot backend, Android tablet application, and iOS framework generation through Kotlin Multiplatform technology.
The project follows a hierarchical Gradle configuration with centralized dependency management and build logic separation.
The root build.gradle.kts
establishes project-wide settings and plugin management:
Configuration Area | Details |
---|---|
Plugin Management | Applies multiplatform, compose, and Android plugins to subprojects |
Repository Configuration | Configures Maven Central, Google, and Compose repositories |
Java/Kotlin Compatibility | Sets Java 17 as target with UTF-8 encoding |
Dependency Resolution | Forces specific versions for security (commons-compress) |
The build script includes global dependency resolution strategies and compiler configurations.
The build-logic
module contains custom Gradle plugins and shared build configuration:
The tablet client uses Kotlin Multiplatform to target both Android and iOS platforms from shared code.
The multiplatform configuration includes specific iOS framework settings:
- Static framework generation with
isStatic = true
- Export of key dependencies (
decompose
,calf-ui
,essenty-lifecycle
) - Compiler flag to disable Decompose parcelize for iOS compatibility
The project uses multiple Gradle plugins for different aspects of the build process.
Plugin | Version | Purpose |
---|---|---|
kotlin-multiplatform |
2.1.21 | Enables cross-platform Kotlin compilation |
kotlin-plugin-compose |
2.1.21 | Compose compiler integration |
jetbrains-compose |
1.8.1 | Compose Multiplatform framework |
android-application |
8.9.1 | Android app build support |
kotlin-serialization |
2.1.21 | JSON serialization support |
buildkonfig |
- | Build-time configuration generation |
google-services |
4.4.3 | Firebase integration |
The Android-specific build configuration includes signing, build types, and application metadata.
The Android configuration includes environment-based signing for release builds:
OFFICE_ELEVATOR_RELEASE_ALIAS
OFFICE_ELEVATOR_RELEASE_KEY_PASSWORD
OFFICE_ELEVATOR_RELEASE_STORE_PASSWORD
The project uses a modular dependency structure with clear separation between platform-specific and shared dependencies.
The composeApp
module depends on multiple local modules:
Module Type | Modules | Purpose |
---|---|---|
Core Modules |
core:ui , core:data , core:domain
|
Shared infrastructure |
Feature Modules |
feature:main , feature:settings , feature:bookingEditor , feature:fastBooking , feature:slot
|
Application features |
The project uses BuildKonfig to generate build-time configuration constants.
The BuildKonfig plugin reads from gradle.properties
and generates compile-time constants:
-
apiUrlRelease
for production API endpoint -
apiUrlDebug
for development API endpoint -
apiKey
for API authentication
The build system includes several development tools and configurations to support the development workflow.
Setting | Value | Purpose |
---|---|---|
Java Version | VERSION_17 | Source and target compatibility |
Kotlin JSR305 | strict | Null safety annotations |
Encoding | UTF-8 | Character encoding for source files |
Test Framework | JUnit Platform | Unit testing support |
The project includes specific IDE configurations:
- Android Manifest with development permissions
- Compose UI tooling for preview support
- Resource packaging exclusions