46

I have gone through similar questions regarding build.gradle and I have looked through the Gradle Kotlin Primer and I don't see how to add a .jar file to a build.gradle.kt file. I am trying to avoid using mavenLocal()

Naruto Sempai
  • 6,233
  • 8
  • 35
  • 51

3 Answers3

88

If you are looking for the equivalent of

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

that would be:

implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
david.mihola
  • 12,062
  • 8
  • 49
  • 73
25

For Kotlin dsl in gradle 5.4.1 with build.gradle.kts

use

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

I suggest add single file at once because it is easier to keep track of dependencies.

full build.gradle.kts look like this

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")
}
Haha TTpro
  • 5,137
  • 6
  • 45
  • 71
  • 3
    It is better to specify the full path, i.e. `implementation(files("$projectDir/commonjar/3rdparty/gson-2.8.5.jar"))` instead of relative path. I experienced errors on Travis-CI with relative paths. – gotson Sep 06 '19 at 03:02
10

Another answer suggests using map keys and values like we usually do in Groovy. Instead of using that dynamic approach, a more idiomatic and type-safe equivalent would be to use the closure to filter which files to include in the file tree:

api(fileTree("src/main/libs") { include("*.jar") })
Nicolas
  • 6,611
  • 3
  • 29
  • 73