Как добавить локальную зависимость файла .jar в файл build.gradle.kt?

У меня были похожие вопросы относительно build.gradle, и я просмотрел Gradle Kotlin Primer и я не понимаю, как добавить файл .jar в файл build.gradle.kt. Я пытаюсь избежать использования mavenLocal()


person Naruto Sempai    schedule 13.01.2019    source источник


Ответы (3)


Если вы ищете эквивалент

implementation fileTree(dir: 'libs', include: ['*.jar'])

это было бы:

implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
person david.mihola    schedule 16.01.2019
comment
пожалуйста, подробнее о том, как добавить отдельный файл jar (с абсолютной директорией) - person Haha TTpro; 12.06.2019

Для Kotlin dsl в gradle 5.4.1 с build.gradle.kts

использовать

implementation(files("/commonjar/3rdparty/gson-2.8.5.jar"))

Я предлагаю добавить один файл сразу, потому что так легче отслеживать зависимости.

полный build.gradle.kts выглядит так

plugins {
    // Apply the java-library plugin to add support for Java Library
    `java-library`
}

repositories {
    // Use jcenter for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}

configurations { create("externalLibs") }



dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api("org.apache.commons:commons-math3:3.6.1")

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation("com.google.guava:guava:27.0.1-jre")

    implementation(files("/commonjar/3rdparty/gson-2.8.5.jar"))


    // Use JUnit test framework
    testImplementation("junit:junit:4.12")
}
person Haha TTpro    schedule 12.06.2019
comment
Лучше указывать полный путь, т.е. implementation(files("$projectDir/commonjar/3rdparty/gson-2.8.5.jar")) вместо относительного пути. Я столкнулся с ошибками в Travis-CI с относительными путями. - person Gauthier; 06.09.2019

Другой ответ предлагает использовать ключи и значения карты, как мы обычно делаем в Groovy. Вместо использования этого динамического подхода более идиоматичным и типобезопасным эквивалентом было бы использование замыкания для фильтрации файлов, которые нужно включить в дерево файлов:

api(fileTree("src/main/libs") { include("*.jar") })
person Nicolas    schedule 15.07.2020