Я новичок в Gradle, и мне нужна помощь, пожалуйста. Если мне нужны мои собственные библиотеки и внешние библиотеки (поставщика), куда я должен поместить эти библиотеки (внешние и персональные)? Спасибо за помощь !
(пример: скриншот моей текущей структуры каталогов)
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. Особенно для сторонних зависимостей. Вы даже можете определить локальный репозиторий, чтобы использовать файлы метаданных (например, файлы .pom
или .module
), если вы не можете использовать удаленные, такие как Maven Central или JCenter.
Когда вы зависите от других проектов Gradle, если они связаны, вы можете структурировать их как мультипроекты вместо того, чтобы создавать и помещать их в папку «libs».
Если они не связаны между собой, вы также можете опубликовать их в репозитории Maven (локальном или удаленном) или просмотреть составные сборки, хотя это довольно сложная тема.
Наконец, если вы не знаете, редакция сообщества MySQL Connector/J версии 5.x распространяется под лицензией GPL v2. Это означает, что ваше собственное приложение также должно быть лицензировано по GPL v2.
Более поздние версии, такие как 8.x (я не уверен насчет 6 и 7), имеют двойную лицензию GPL v2, но имеют положение под названием The Universal FOSS Exception, которое позволяет вам связывать и использовать библиотеку в вашем собственном приложении, не затрагивая вашу собственную лицензию.
Если это просто хобби-проект, никто не узнает о вашей двери, если вы нарушите лицензию. Но если это для компании, будьте осторожны, иначе у вас могут возникнуть проблемы с законом. Oracle время от времени проводит аудиты, и они, как известно, не упустят возможность ударить вас по лицу большой лицензионной платой.