Начните с gradle: структура каталогов

Я новичок в Gradle, и мне нужна помощь, пожалуйста. Если мне нужны мои собственные библиотеки и внешние библиотеки (поставщика), куда я должен поместить эти библиотеки (внешние и персональные)? Спасибо за помощь !

(пример: скриншот моей текущей структуры каталогов)

Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
1
0
653
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Gradle дает вам несколько различных вариантов для этого.

Во всех случаях не существует фиксированной структуры папок для зависимостей локальных файлов, и вы вольны выбирать то, что вам нравится. libs мне кажется нормально.

Все приведенные ниже примеры относятся к Groovy DSL. Обратитесь к руководству пользователя Gradle для вариантов Kotlin DSL.

Зависимости файлов

Чтобы добавить зависимости из локальной папки, вы можете использовать методы Project.file() или Project.fileTree(). Оба выбирают путь, который разрешается относительно каталога проекта.

dependencies {
    implementation files('libs/a.jar')                  // Single file
    implementation files('libs/b.jar', 'libs/c.jar')    // Multiple files
    implementation fileTree('libs')                     // All files in a folder
    implementation fileTree('libs') { include '*.jar' } // All jar files in a folder
}

См. Зависимости файлов в руководстве пользователя для получения дополнительной информации.

Репозиторий плоского каталога

Вы также можете объявить репозиторий плоского каталога. Здесь путь относится к тому месту, откуда вы вызываете Gradle, поэтому, чтобы сделать его согласованным, вы должны сделать его абсолютным (используя projectDir или rootDir).

repositories {
    flatDir name: 'local-libs', dirs: "$projectDir/libs" // The name is optional
}

Затем вы можете объявить зависимости, используя обычный формат с группой, именем и версией. Однако, поскольку группа игнорируется, вы можете написать все, что хотите, или просто пропустить это:

dependencies {
    implementation 'mysql:mysql-connector-java:5.1.49' // Real Maven coordinates
    implementation ':mysql-connector-java:5.1.49'      // Short-hand for local coordinates
}

См. этот раздел для получения дополнительной информации.

Репозитории Maven и отдельные проекты Gradle

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

Если возможно, попробуйте использовать репозитории Maven. Особенно для сторонних зависимостей. Вы даже можете определить локальный репозиторий, чтобы использовать файлы метаданных (например, файлы .pom или .module), если вы не можете использовать удаленные, такие как Maven Central или JCenter.

Когда вы зависите от других проектов Gradle, если они связаны, вы можете структурировать их как мультипроекты вместо того, чтобы создавать и помещать их в папку «libs».

Если они не связаны между собой, вы также можете опубликовать их в репозитории Maven (локальном или удаленном) или просмотреть составные сборки, хотя это довольно сложная тема.

Примечание о лицензии на программное обеспечение MySQL Connector

Наконец, если вы не знаете, редакция сообщества MySQL Connector/J версии 5.x распространяется под лицензией GPL v2. Это означает, что ваше собственное приложение также должно быть лицензировано по GPL v2.

Более поздние версии, такие как 8.x (я не уверен насчет 6 и 7), имеют двойную лицензию GPL v2, но имеют положение под названием The Universal FOSS Exception, которое позволяет вам связывать и использовать библиотеку в вашем собственном приложении, не затрагивая вашу собственную лицензию.

Если это просто хобби-проект, никто не узнает о вашей двери, если вы нарушите лицензию. Но если это для компании, будьте осторожны, иначе у вас могут возникнуть проблемы с законом. Oracle время от времени проводит аудиты, и они, как известно, не упустят возможность ударить вас по лицу большой лицензионной платой.

Другие вопросы по теме