Search code examples
gradlekotlingradle-kotlin-dsl

Build source jar with Gradle Kotlin DSL?


This question asks how to build a SourceJar with Gradle. How can I do the same with the Gradle Kotlin DSL?

The gradle code would be:

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}

Solution

  • The following will work:

    val sourcesJar by creating(Jar::class) {
        dependsOn(JavaPlugin.CLASSES_TASK_NAME)
        classifier = "sources"
        from(sourceSets["main"].allSource)
    }
    
    val javadocJar by creating(Jar::class) {
        dependsOn(JavaPlugin.JAVADOC_TASK_NAME)
        classifier = "javadoc"
        from(tasks["javadoc"])
    }
    
    artifacts {
        add("archives", sourcesJar)
        add("archives", javadocJar)
    }
    

    A complete build.gradle.kts would look like this:

    plugins {
        kotlin("jvm") version "1.2.71"
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
    }
    
    tasks {
        val sourcesJar by creating(Jar::class) {
            dependsOn(JavaPlugin.CLASSES_TASK_NAME)
            classifier = "sources"
            from(sourceSets["main"].allSource)
        }
    
        val javadocJar by creating(Jar::class) {
            dependsOn(JavaPlugin.JAVADOC_TASK_NAME)
            classifier = "javadoc"
            from(tasks["javadoc"])
        }
    
        artifacts {
            add("archives", sourcesJar)
            add("archives", javadocJar)
        }
    }