Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Инициализировать gradle проект в репозитории #32

Closed
vityaman opened this issue Mar 25, 2024 · 4 comments · Fixed by #43
Closed

Инициализировать gradle проект в репозитории #32

vityaman opened this issue Mar 25, 2024 · 4 comments · Fixed by #43
Assignees
Labels
enhancement New feature or request

Comments

@vityaman
Copy link
Member

vityaman commented Mar 25, 2024

Перед тем, как начать разрабатывать компоненты системы, хорошо бы создать для каждого из них свою папочку. Поскольку стек у нас очень похож, все можно собирать с помощью gradle. Также важно создать отдельный проект с логикой сборки, чтобы разделять скрипты для запуска линтеров, например. Предлагается такая структура.

nexo-hub
- build-logic
- android-app
- gateway-service
- log-service
- database-service
- load-generator

Над названиями долго не думал, хорошо бы придумать нормальные, говорящие и не такие скучные.

В каждом подпроекте будет свой settings.gradle.kts, но все будут подтягивать build-logic в качестве зависимости, а там уже будут описаны всякие общие штуки.

@vityaman vityaman added the enhancement New feature or request label Mar 25, 2024
@vityaman vityaman self-assigned this Mar 25, 2024
@e1turin
Copy link
Collaborator

e1turin commented Apr 4, 2024

думаю нужно посмотреть как принято называть модули в таких проекта. потому что точно нужно будет вынести common модуль (#35). там есть какие-то приколы с именованием Kotlin-модулей в мультиплатформенной сборке

@e1turin
Copy link
Collaborator

e1turin commented Apr 5, 2024

GPT предлагает такой вариант:

- my_repository/
  - common/
    - src/
      - commonMain/          // Общий код для всех платформ
      - commonJvm/           // Код, специфичный для JVM
      - commonAndroid/       // Код, специфичный для Android
      - commonIOS/           // Код, специфичный для iOS
  - mobile_app/
    - src/
      - mobileMain/          // Код для мобильного приложения
      - mobileAndroid/       // Код, специфичный для Android мобильного приложения
  - backend_app/
    - src/
      - backendMain/         // Код для backend приложения
      - backendJvm/          // Код, специфичный для JVM backend приложения
  - log_service/
    - src/
      - logMain/             // Код для сервиса логов
      - logJvm/              // Код, специфичный для JVM сервиса логов

Понятно, что нужно еще поискать как это делают и тут не все сервисы

https://kotlinlang.org/docs/multiplatform-dsl-reference.html

@vityaman
Copy link
Member Author

vityaman commented Apr 10, 2024

Мне удалось собрать проект с помощью Gradle, в котором 3 модуля: frontend (Android), backend (Ktor) и shared (Java Library). Также подключил линтер Detekt во frontend и backend. Для Detekt приходится добавлять плагин, плагин для форматирования и кофигурацию в build.gradle.kts каждого модуля. Это так, потому что мне не удалось завезти buildSrc - там боль и страдания.

Ссылка на репозиторий:
https://github.com/vityaman-edu/gradle-ktor-android-monorepo

@e1turin
Copy link
Collaborator

e1turin commented Apr 11, 2024

продолжение в #42

@e1turin e1turin closed this as completed Apr 11, 2024
Andryss added a commit that referenced this issue Apr 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Done
2 participants