Skip to content

infrastructure 0.13

Compare
Choose a tag to compare
@osipxd osipxd released this 14 Dec 12:45
· 167 commits to develop since this release
fbbcc59

Change plugins naming convention

Breaking change!

Plugins group changed from redmadrobot to com.redmadrobot.
This change allows us to publish infrastructure plugins to Gradle Plugins Portal and make it easier to add plugins to project.

Changing resolutionStrategy in settings.gradle.kts is not needed anymore.
To make migration easier, it is allowed to apply plugins with deprecated IDs if you've specified resolutionStrategy, but it will throw a warning to console.

Switch to multi-modular structure

Breaking change!

Why multi-modular structure?

Until now plugins' structure inside module infrastructure was looking like this:

Plugin root-project was used to add configurations for all others plugins.
With such structure all plugins should know about root-project plugin to access configs, and root-project should also know about all plugins to hold their configs.
It is possible only if all plugins are declared in the same module with root-project.
So it was the main stopping factor from breaking infrastructure to several independent modules.

Multi-modular structure gives important benefits to us:

  • Allows modules to be updated independently, allowing users to pick what version of each module they want to use.
  • Makes infrastructure more scalable.
    Because it is not more required to change root-project when adding a new plugin.
  • Enables to use only "what you want" and don't bring extra dependencies to project.

Since now plugins are separated to modules:

Plugin root-project is deprecated now and will be removed in further versions.
Extensions are added to project via *-config plugins (exception is detekt plugin, so it is designed to be applied to root project).

If you want to get the same behavior as applying root-project, you can apply all config plugins to the root project:

apply {
    id("com.redmadrobot.android-config") version "0.13"
    id("com.redmadrobot.publish-config") version "0.13"
    id("com.redmadrobot.detekt") version "0.13"
}

Configs behavior changes

  • *-config plugins can be applied to any project.
    Config from inner project will inherit options from outer project.
  • Options redmadrobot.android.test are inherited from redmadrobot.test

Dependencies

  • Kotlin 1.5.30 -> 1.5.31
  • Detekt 1.18.1 -> 1.19.0

Added

  • Added repository extension jitpack() (#82)

Changed

  • Breaking change! Repositories ossrh and ossrhSnapshots now use host s01.oss.sonatype.org by default.
    To keep legacy host oss.sonatype.org, use ossrh(LEGACY) instead.
  • Breaking change! Directory with ProGuard rules now intended to be in application project instead of root project.
  • Default targetSdk changed from 30 to 31.
  • Gradle updated to 7.3.1

Fixed

  • Non-Kotlin modules are excluded from checking that the module contains detekt #81