Подключение package в Gradle
От: Светлояр Беларусь  
Дата: 28.11.23 02:35
Оценка:
Здравствуйте, коллеги!

С инструментарием Java почти не работал. Хочу разработать одно приложение.
Сделал проект в IntelliJ + Gradle. Мне нужно подключить объектную СУБД ObjectBox.

Есть ошибка: "Package not found: io.objectbox"

Вероятно, не понимаю, как устроена иерархия и взаимодействие файлов build.gradle, чтобы package-ы подхватились. Reload all Gradle Projects ошибок не выдаёт.

Предыстория такая:

У меня простой консольный проект. Изначально в нём был только один корневой файл build.gradle. В /src есть main и test.
Я создал в /src вложенный build.gradle, потому что в корневом не разрешалось добавлять следующее:
plugins {
    id 'java-library'
    id 'io.objectbox'
}

dependencies {
    def objectboxVersion = "3.7.1"

    implementation("io.objectbox:objectbox-java:$objectboxVersion")
    implementation("io.objectbox:objectbox-java-api:$objectboxVersion")
    implementation("io.objectbox:objectbox-windows:$objectboxVersion")

    annotationProcessor("io.objectbox:objectbox-processor:$objectboxVersion")
}

objectbox {
    debug = true
}


В корневой build.gradle я добавил лишь это:
buildscript {
    ext.objectboxVersion = "3.7.1"

    repositories {
        mavenCentral()
        google()
    }

    dependencies {
        classpath("io.objectbox:objectbox-gradle-plugin:$objectboxVersion")
    }
}


При попытке использовать:
import io.objectbox.annotation.*;
import io.objectbox.relation.*;


Получаю:

error: package io.objectbox.annotation does not exist
error: package io.objectbox.relation does not exist


Что я упустил, что делаю не так? Точно такой же код в build.gradle в Android Studio прекрасно работает, package-ы подключаются.
gradle java packages
Re: Подключение package в Gradle
От: GarryIV  
Дата: 29.11.23 13:11
Оценка: +1
Здравствуйте, Светлояр, Вы писали:

С>Я создал в /src вложенный build.gradle, потому что в корневом не разрешалось добавлять следующее:

это все звучит мега странно и неправильно
в срц не кладут никогда build.gradle
что значит не разрешалось добавлять?

PS: и лучше kts
WBR, Igor Evgrafov
Re[2]: Подключение package в Gradle
От: Светлояр Беларусь  
Дата: 30.11.23 15:06
Оценка: +1
Здравствуйте, GarryIV, Вы писали:

GIV>Здравствуйте, Светлояр, Вы писали:


С>>Я создал в /src вложенный build.gradle, потому что в корневом не разрешалось добавлять следующее:

GIV>это все звучит мега странно и неправильно
GIV>в срц не кладут никогда build.gradle
GIV>что значит не разрешалось добавлять?

GIV>PS: и лучше kts


На форуме IntelliJ подсказали решение проблемы. Оказалось, что подключать плагин нужно, создав вложенный модуль (New -> Module...) в проекте. И уже в нём создавать build.gradle с подключением плагина io.objectbox и сопутствующими настройками.

Т.е. сейчас это выглядит так:

Некий проект MyProject внутри которого я создал модуль ConsoleTool и уже в нём весь код программы и содержимое первого build.gradle в исходном сообщении.
Отредактировано 30.11.2023 15:09 Светлояр . Предыдущая версия .
Re: Подключение package в Gradle
От: vsb Казахстан  
Дата: 30.11.23 15:29
Оценка:
Для начала убери идею и создай проект, который собирается в консоли. Не нужно каких-то непонятных усложнений. У тебя должна быть структура примерно такого вида:

myproject/
  build.gradle
  src/main/java/ru/mycode/MyClass.java


Напиши в блокноте это всё и добейся, чтобы `gradle build` срабатывал без ошибок. А потом этот проект импортируй в идею.
Re[2]: Подключение package в Gradle
От: Светлояр Беларусь  
Дата: 30.11.23 17:07
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Для начала убери идею и создай проект, который собирается в консоли. Не нужно каких-то непонятных усложнений. У тебя должна быть структура примерно такого вида:


vsb>
vsb>myproject/
vsb>  build.gradle
vsb>  src/main/java/ru/mycode/MyClass.java
vsb>


vsb>Напиши в блокноте это всё и добейся, чтобы `gradle build` срабатывал без ошибок. А потом этот проект импортируй в идею.


Уже нашёл решение, ответил в соседней ветке: проблема была в другом, для меня совершенно не очевидная — http://rsdn.org/forum/java/8643644.1
Автор: Светлояр
Дата: 30.11.23


P.S. Проект изначально собирался, без objectbox-а. Собственно там и был один файл.

P.P.S. Не знаю, насколько это корректно для Java-проектов, структура получилась такой:

myproject/
|--build.gradle
|--(...)
|--consoletool/
   |--build.gradle // <-- вот в нём как раз подключаем plugins { id 'io.objectbox' } и объявляем нужные dependencies.
   |--src/...
|--(...)
|--src/
   |--(...) // а изначально у меня build.gradle был здесь и класс с методом main я здесь размещал
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.