-
Type: Task
-
Resolution: Fixed
-
Priority: Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
This issue is part of https://github.com/realm/realm-kotlin/issues/31 and is an attempt at figuring out exactly what we should name our artifacts.
Right now we having everything in the io.realm.kotlin group. Which is probably fine and sets it apart from io.realm which is our Java repos. Some other examples:
Google: https://maven.google.com/web/index.html, is a bit all over the place but e.g. androidx.<product> follows the same pattern.
Square: https://mvnrepository.com/artifact/com.squareup, does the same thing with e.g. com.squareup.okhttp3 and com.squareup.okhttp4
Current artifacts
Flavors used are base and objectServer
// Base artifacts io.realm:realm-android-library:10.0.0 io.realm:realm-android-kotlin-extensions:10.0.0 // ObjectServer artifacts io.realm:realm-android-library-object-server:10.0.0 io.realm:realm-android-kotlin-extensions-object-server:10.0.0 // Shared artifacts io.realm:realm-annotations:10.0.0 io.realm:realm-annotations-processor:10.0.0 io.realm:realm-gradle-plugin:10.0.0 io.realm:realm-transformer:10.0.0
// Main entry point for people is
io.realm:realm-gradle-plugin:10.0.0
and
apply plugin: realm-java
Proposed new artifacts
Proposed flavors: database and app. Proposal is to use app-library as the name for the current master where we don't have flavors yet, and then add the database-library package once we create the flavors.
// Base artifacts io.realm.kotlin:database-library:1.0.0 // Realm App artifacts io.realm.kotlin:app-library:1.0.0 // Shared artifacts io.realm.kotlin:plugin-compiler:1.0.0 io.realm.kotlin:plugin-compiler-shaded:1.0.0 io.realm.kotlin:gradle-plugin:1.0.0 // Shared KMP artifacts // I suspect we will end up with two variants for this io.realm.kotlin:runtime-api:1.0.0
// Main entry point is
io.realm.kotlin:gradle-plugin:1.0.0
but it is a bit unclear exactly how we can support our multiple targets?
Should we have multiple plugins?
apply plugin: realm-kotlin-kmp apply plugin: realm-kotlin-android
Or do we only want one with specific kmp settings? I.e. there is probably a use case where you have an KMP project, but only want Realm in the Android variant. Should this instead be solved through a single plugin and the a config closure:
apply plugin: realm-kotlin realm { kmp { // Automatically true for all variants we can find android = true iOS = false jvm = false } }
Alternative
Alternatively, we keep io.realm as the group and prefix most of the above artifacts with realm-kotlin-<x>. Not sure if/how that would make things easier to manage. On purpose, we try to keep most of the artifacts away from users eyes anyway.
- is depended on by
-
RKOTLIN-148 Story: Project Infrastructure
- Backlog