Reputation: 65630
I've got a small Kotlin library that I'm building with the Gradle Kotlin DSL, so my build.gradle.kts
looks something like this:
plugins {
id("org.jetbrains.kotlin.jvm") version "1.5.31"
`java-library`
}
group = "foo.bar.api"
version = "1.0"
repositories {
mavenCentral()
}
dependencies {
implementation(platform("org.jetbrains.kotlin:kotlin-bom"))
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
testImplementation("org.jetbrains.kotlin:kotlin-test")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}
I'd like to be able to build a jar that includes both the compiled code and the sources. I know that I can get a separate sources JAR via:
java {
withSourcesJar()
}
But I haven't been able to figure out the right incantation to build a JAR that includes both the sources and the compiled code in a single artifact.
Upvotes: 2
Views: 2785
Reputation: 33481
You should probably tweak the jar
task, not the Java Plugin extension (the top-level java
clause). Try this:
tasks {
withType<Jar> {
from(sourceSets["main"].allSource)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
}
I tested it quickly in my project and it seems to work, but due to some quirks I need that duplicatesStrategy
. It should probably work without that for you.
Upvotes: 3