All Projects → formatools → Forma

formatools / Forma

Licence: apache-2.0
Meta build system with Android and Gradle support.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Forma

Gogradle
A Gradle Plugin Providing Full Support for Go
Stars: ✭ 712 (+460.63%)
Mutual labels:  gradle, gradle-plugin, build
RocketXPlugin
🔥🔥 android 端编译加速插件🚀 自动识别未改动 module 并在编译流程中替换为 aar ,只编译改动模块,加速 Android apk 的编译速度。
Stars: ✭ 408 (+221.26%)
Mutual labels:  build, gradle, gradle-plugin
Vertx Gradle Plugin
An opinionated Gradle plugin for Vert.x projects
Stars: ✭ 98 (-22.83%)
Mutual labels:  gradle, gradle-plugin
Kordamp Gradle Plugins
A collection of Gradle plugins
Stars: ✭ 100 (-21.26%)
Mutual labels:  gradle, gradle-plugin
Jib
🏗 Build container images for your Java applications.
Stars: ✭ 11,370 (+8852.76%)
Mutual labels:  gradle, gradle-plugin
Androidanimationexercise
Android 动画各种实现,包括帧动画、补间动画和属性动画的总结分享
Stars: ✭ 1,254 (+887.4%)
Mutual labels:  gradle, gradle-plugin
Gradle Buildconfig Plugin
A plugin for generating BuildConstants for any kind of Gradle projects: Java, Kotlin, Groovy, etc. Designed for KTS scripts.
Stars: ✭ 85 (-33.07%)
Mutual labels:  gradle, gradle-plugin
Clojurephant
Clojure and Clojurescript support for Gradle
Stars: ✭ 118 (-7.09%)
Mutual labels:  gradle, gradle-plugin
Auto Manifest
Generates AndroidManifest.xml in simple libraries so that you don't have to
Stars: ✭ 51 (-59.84%)
Mutual labels:  gradle, gradle-plugin
Godot
Keep track of how much time you spend on Gradle builds
Stars: ✭ 113 (-11.02%)
Mutual labels:  gradle, gradle-plugin
Gradle Build Properties Plugin
Keep your secrets secret. External build properties support for your Gradle scripts.
Stars: ✭ 110 (-13.39%)
Mutual labels:  gradle, gradle-plugin
Okbuck
OkBuck is a gradle plugin that lets developers utilize the Buck build system on a gradle project.
Stars: ✭ 1,513 (+1091.34%)
Mutual labels:  gradle, gradle-plugin
Gradle Plugins
Gradle Plugin Collection
Stars: ✭ 84 (-33.86%)
Mutual labels:  gradle, gradle-plugin
Gradle Semantic Build Versioning
Gradle plugin to generate version-numbers and tags using semantic versioning
Stars: ✭ 69 (-45.67%)
Mutual labels:  gradle, gradle-plugin
Gradle Quality Plugin
Gradle quality plugin for Java and Groovy
Stars: ✭ 97 (-23.62%)
Mutual labels:  gradle, gradle-plugin
Gradle S3 Build Cache
An AWS S3 Gradle build cache implementation
Stars: ✭ 54 (-57.48%)
Mutual labels:  gradle, gradle-plugin
Gradle Changelog Plugin
Plugin for parsing and managing the Changelog in a "keep a changelog" style.
Stars: ✭ 102 (-19.69%)
Mutual labels:  gradle, gradle-plugin
Gradle Eclipse Aar Plugin
Gradle plugin to use Android AAR libraries on Eclipse.
Stars: ✭ 127 (+0%)
Mutual labels:  gradle, gradle-plugin
Hunter
A fast, incremental, concurrent framework to develop compile plugin for android project to manipulate bytecode
Stars: ✭ 999 (+686.61%)
Mutual labels:  gradle, gradle-plugin
Enigma
Gradle Plugin - Obfuscator String Encryption (Android/Java)
Stars: ✭ 43 (-66.14%)
Mutual labels:  gradle, gradle-plugin

Logo

GitHub code size in bytes License Contributors GitHub top language GitHub closed pull requests GitHub Repo stars

Forma - Kotlin first, Meta Build System with Android and Gradle support. Opinionated, scalable, thoughtfully structured, type-safe and guided way to declare your project structure. Distributed as a Gradle plugin, Forma helps developers to shift focus from Build Configuration to Project Structure Declaration, abstracting away build configuration complexity.

  • You don't need to be a gradle expert anymore
  • Get rid of project configuration bad practices
  • Type-safe, single method configuration for your targets, no room for error
  • Built-in dependency visibility rules
  • Target types - enforce scalable project structure
  • High-performance builds: Gradle best practices are applied automatically
  • Dependencies framework - helps developers to understand and deal with transitive dependencies hell
  • Extensible - be the expert when you need to!
  • And much more...

⚠️ We are using target term to express application components(e.g. modules or projects, depending in the context) across documentation and code, there is couple of reasons for that. Module term often confused with Dagger modules which makes communication harder, project from the other hand used only in Gradle context but not in other build systems like Buck and Bazel.

⚠️ This is early alpha release - please do try this at home🏠

Easiest way to start is here >> ‼️ https://github.com/stepango/FormaShowcase ‼️

Presentation Link

Configuration made easy (Gradle 6.8+):

// settings.gradle.kts
dependencyResolutionManagement {
    @Suppress("UnstableApiUsage")
    repositories {
        google()
        jcenter()
    }
}

// root build.gradle.kts
buildscript {
    repositories {
        google()
    }
}

plugins {
    id("tools.forma.android") version "0.0.1"
}

// Configure shared aspects of your android Project
androidProjectConfiguration(
    minSdk = 21,
    targetSdk = 29,
    compileSdk = 29,
    kotlinVersion = "1.4.10",
    agpVersion = "4.0.0",
    versionCode = 1,
    versionName = "1.0"
)

Your kotlin android library

// Single method, type-safe creation of your target
// Plugins applied automatically
// Project configuration shared between targets
androidLibrary(
    // Mandatory, visible from build configuration
    packageName = "com.stepango.example",
    // External dependencies declaration, one universal syntax
    dependencies = deps(
        google.material,
        androidx.appcompat,
    ) + deps(
        // Internal project dependencies, declared separately from externals
        project(":demo-library")
    ),
    // Test dependencies declaration
    testDependencies = deps(
        test.junit
    ),
    // Android test dependencies declaration
    androidTestDependencies = deps(
        test.espresso
    )
)

Progress

Supported target types implemented purpose validation
androidBinary Genearte single APK
androidApp Application class partial
androidLibrary Android library partial
dataBinding Data Binding Layouts partial
dataBindingAdapters Data Binding Adapters partial
androidWidget Custom View partial
androidRes Resources Only
androidTestUtils Shared code for Android tests
androidUtils Library extensions partial
testUtils Shared code for unit tests
utils JVM Library extensions partial
library JVM Library partial
api Feature external API's partial
impl Feature implementation partial

Icons made by Freepik from www.flaticon.com

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].