- Updated to Kotlin 2.1.0
- Enable new Kotlin language features
- Guard conditions in when with a subject (
-Xwhen-guards
), - Non-local break and continue (
-Xnon-local-break-continue
) - Multi-dollar string interpolation (
-Xmulti-dollar-interpolation
)
- Guard conditions in when with a subject (
- New Gradle properties to configure Kotlin compiler daemon:
- enable
extraWarnings
option in the compiler by default, can be disabled by settingfgp.kotlin.extraWarnings=false
- replaced the
fgp.kotlin.allowWarnings
property withfgp.kotlin.warningsAsErrors
(defaults to true) - allow easily suppressing deprecation warnings by setting
fgp.kotlin.suppressDeprecationWarnings=true
(defaults to false)
- enable
- Disable progressive mode for kapt stub generation when not using K2.
- Fix
Content-Type
not being set correctly when uploading html files to s3. - Don't report
com.freeletics.gradle:minify-common
andcom.freeletics.gradle:minify-crashlytics
as unused dependencies since they're added by default.
- When uploading html files to s3, set the
Content-Type
totext/html
.
- New
com.freeletics.gradle:scripts-s3
artifact that contains helpers for interacting with S3. - Fix
GoogleSheetsReader
expecting a base64 encoded json key.
- New
com.freeletics.gradle:scripts-google
artifact that contains helpers for interacting with the Google Play and Google Sheets APIs.
- Fix repository name for internal artifacts.
- Added
useSkie
,useKopy
, andusePoko
to enable the respective plugins. - Added new
versionBasedOnDate
method and several overloads ofcomputeVersionName
andcomputeVersionCode
to make using them easier. - New
com.freeletics.gradle:scripts-circleci
artifact that contains helpers for writing kts scripts that run in a CircleCI environment or interact with CircleCI. - New
com.freeletics.gradle:scripts-slack
artifact that makes it easy to write kts scripts that send Slack messages. - Updated ktlint to 1.4.1.
usePaparazzi()
will now apply the official Paparazzi release instead of the Freeletics Paparazzi fork.- The
com.freeletics.gradle.root
plugin is now shipped in the same artifact as the others. - Removed
fgp.kotlin.anvilKsp
andfgp.kotlin.anvilKspWithComponent
. Anvil is now always run through the Anvil KSP fork. - Removed enforcing a Gradle Daemon JVM by setting
java-gradle
in the version catalog. Use Daemon JVM toolchains instead (runupdateDaemonJvm
task).
- Update Kotlin to 2.0.20.
- Enable
-Xconsistent-data-class-copy-visibility
by default. - Add WASM/WASI to the list of common multiplatform targets.
- Bring back
fgp.kotlin.daggerKsp
option since Dagger KAPT can be faster than Dagger KSP.
- Update ktlint to 1.3.1.
- Updated
fgp.kotlin.anvilKsp
andfgp.kotlin.anvilKspWithComponent
to use the Anvil fork. - Removed
fgp.kotlin.daggerKsp
, whether Dagger is used through KSP is now controlled byfgp.kotlin.anvilKspWithComponent
. - Avoid warning about setting
buildFeatures.compose
.
- Fixed issue with Kotlin compiler options not being applied to multiplatform targets.
- Removed
useMoshi
.
- Update Kotlin to 2.0.0.
dependencyResolutionManagement.repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
is now always enabled. The opt out Gradle propertyfgp.kotlin.multiplatformProject
is not used anymore.useDagger
anduseSerialization
can now be used in multiplatform projects.
- Support for Crashlytics Gradle Plugin 3.0.0.
- Add support for using Compose in Kotlin 2.0.0 through the new Compose compiler plugin that is shipped as part of Kotlin.
- Only enable Kotlin's progressive mode if the language version matches or exceeds the current Kotlin version.
- Separate activating Anvil KSP for app modules from library modules. This allows using Anvil KSP and K2 in most of the code base until Anvil KSP is supporting contributed subcomponents.
addIosTargets
now is not creating a framework anymore.addIosTargetsWithXcFramework
can be used for that instead.- Don't publish build scans by default.
- Add mechanism to override version catalog versions through Gradle properties. The property should have
fgp.version.override.<name-of-version-in-catalog>
as name. - Add support for setting a
room.schemaLocation
. - Add support for enabling kotlinx.serialization through
useSerialization()
. - Set
-Xjdk-release
option for Kotlin/JVM projects. - Update the setup for Anvil KSP to support Anvil 2.5.0.
- Removed options for Khonshu's experimental navigation.
- Fixed missing
wasmJs
test targets warning.
addCommonTargets
now adds thewasmJs
target.addIosTargets
doesn't addiosX64
anymore.- Expose the created framework for
addIosTargets
.
- Actually don't apply gr8 anymore.
com.freeletics.gradle.gradle
does not apply gr8 and best-practices anymore.- Updated dependencies.
- Updated to Gradle 8.5.
- Updated to Kotlin 1.9.20.
- Updated to AGP 8.5.
- Support for AGP 8.3.0 alpha.
com.freeletics.gradle.app
now enablesgenerateLocaleConfig
by default.- The build number logic has been changed from major version 24 on (2024 releases), see #205 for more details.
- Removed parts of the legacy project config in monorepo plugins
- Updated to Kotlin 1.9.20 and enabled the default hierarchy template for multiplatform projects.
addIosTargets
with enabled XcFrameworks andcom.freeletics.gradle.publish.internal
applied will automatically set up everything to publish the framework (as zip) to Maven repositories- Suppress compiler warning about expect/actual classes being experimental
- Only use the root project as
java-platform
on projects using the monorepo plugins - Don't make
khonshu-codegen-runtime
dependency required foruseDagger()
.
- Default dependencies are now defined through the
default-all
,default-all-compile
,default-android
anddefault-android-compile
bundles which are automatically added to all modules if the bundle exists. - Default test dependencies are now defined through the
default-test
,default-test-compile
anddefault-test-runtime
bundles. - Default lint check dependencies are now defined through the
default-lint
bundle. - The root plugin is now automatically applying the
java-platform
plugin and adds all version catalog entries to the platform. The monorepo plugins are also automatically using the rootProject as platform. - The
check
task now depends oncheckDependencyRules
andverifyPaparazzi
. - Disable the
assemble*
and lint reporting tasks for libraries in the monorepo plugins to avoid accidentally running too many tasks when running something like./gradlew assemble
,./gradlew check
,./gradlew build
or./gradlew lint
.
- For KMP libraries with an Android target only publish the
release
variant by default. - Fix error caused by
ProcessGoogleResourcesTask
. - Fix OSS publish plugin not including licenses.
- Consolidated the Gradle plugins into one module and merged common with base plugins. As a result
the
common
was removed from plugin ids. For examplecom.freeletics.gradle.common.jvm
is nowcom.freeletics.gradle.jvm
. - Plugin ids that previously used a
-
now use a.
, e.g.com.freeletics.gradle.core-android
is nowcom.freeletics.gradle.core.android
. enableCompose()
in theandroid
block was replaced with a top leveluseCompose()
function that applies the Jetbrains Compose plugin for non Android projects.- It's now possible to easily get Compose compiler reports by setting
fgp.compose.enableCompilerMetrics=true
and/orfgp.compose.enableCompilerReports=true
. - The
useRoom()
option will now automatically enable Room's Kotlin codegen. - Paparazzi verify deltas are now automatically copied to the root projects
build/reports
directory. - Support for Licensee 1.8.0.
- Support for Khonshu 0.17.0.
- Fix configuration cache compatibility of
checkDependencyRules
- Downgrade Ktlint because of KT-60813.
- Updated logic of how version code and name are calculated to only consider tags. Branch names and the commit count are not considered anymore.
- Updated experimental options to use Dagger, Anvil and Khonshu through KSP.
- Ktlint 1.0.0
- Updated dependencies.
- Moved Android/JVM/Multiplatform specific DSL methods into sub-extensions.
- It's now possible to change the Android build tools version by setting
android.buildTools
in the version catalog. - Add workaround to incremental build issue in Android's merge Java resources task.
- Removed
enableAndroidTests
from the DSL. - Added flags to use Moshi, Anvil and Khoshu through KSP.
- Addded
consumerProguardFile
to Android DSL. - Adapt
includeKhonshu
for the latest release.
- now requires Kotlin 1.9.0
useRoom
will now use KSP- the
fgp.kotlin.ksp
property was removed - new
fgp.kotlin.daggerKsp
property to use KSP with Dagger discoverProjects
anddiscoverProjectsIn
now have a boolean parameter to declare whether kts build files are used or nor- project auto-disovery works better with the configuration cache by scanning less directories and limiting the project depth (project auto discovery generally does not work well with Gradle 8.1 and 8.2 because of a performance issue)
- when enabling Dagger the new
dagger.warnIfInjectionFactoryNotGeneratedUpstream
flag is enabled automatically - Multiplatform: new
addAndroidTarget
method to add Android as a target - Multiplatform:
addCommonTargets
now has a parameter to skip addingandroidNative*
targets
- adjust APIs and expected version catalog names for MAD -> Khonshu renaming
- fix auto project discovery failing with error
- fix some properties being required by the settings plugin unintenionally
- adjust auto discovery to work better with Gradle 8.1 config cache
- make it possible to disable the default auto discovery
- add
discoverProjects
to settings extension which works like the default discovery - add
discoverProjectsIn
to settings extension which allows only search specified folders for proects
- change expected
fl-whetstone-...
version catalog names tomad-whetstone-...
- make it possible to enable mad experimental navigation through settings extension (
useMadExperimentalNavigation()
andexperimentalNavigation
parameter on `inlu)
- fix issue with the
standard_final-newline
ktlint rule
- Support ktlint 0.49.0
addCommonTargets
will now add all tier 1, 2 and 3 Kotlin/Native targets
- Don't pass jvm specific compiler args to multiplatform compile tasks
- Fix
includeMad
in settings plugin - Ignore unused dependency warning for
() -> java.io.File?
caused by KGP 1.8.20
- Fixes exception when running
generatePluginVersion
- Changes for Kotlin 1.8.20 and AGP 8.0
- Enable
STABLE_CONFIGURATION_CACHE
feature preview by default, can be disabled withfgp.stableConfigurationCache=false
- Improve default repository filters
- Stop trying to load snapshots from maven central
- Only load snapshots from snapshot repositories
- Added ability to pass an AndroidX snapshot repository id to the
snapshot
function - Fix compose compiler snapshots not working because of exclusiveContent
com.freeletics.gradle.common.publish.oss
: automatically enableexplicitApi
mode- Fix configuration caching for
generatePluginVersion
task - Improved gr8 config to reduce warnings
- Kotlin compiler options are now configured for
KotlinCompilationTask
instead ofKotlinCompile
which will include compilation of non jvm targets - Added
com.freeletics.gradle:scripts
which contains classes to run ktlint from a kts script
- Make uploading native symbols to Crashlytics optional by adding a boolean parameter to
enableCrashReporting(...)
. This defaults tofalse
. - When using the oss publish plugin automatically apply Dokka and disable Dokka for
-SNAPSHOT
builds.
- don't create a
clean
task in the root plugin
- create shared
native
source sets when usingaddCommonTargets
in the MPP plugin - add
com.freeletics.gradle.common.android.app
plugin for app modules with the same functionality as the existing library module plugin
- only enable Crashlytics for release builds with real versioning to improve build caching of developer/ci release builds
- stop allowing nav modules to depend on legacy modules
- initial release