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()
Asked
Active
Viewed 2.7k times
3 Answers
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
-
4please more detail on how to add individual jar file (with absolutely directory) – Haha TTpro Jun 12 '19 at 07:53
-
1Do you have any reference on doc which could make all this more obvious? – Gleichmut Jul 14 '23 at 16:22
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
-
3It 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