如何在Gradle 4.10.3中使用Kotlin Gradle DSL从sourceSets中获取“ allJava”?

时间:2019-02-14 16:36:28

标签: gradle kotlin gradle-kotlin-dsl maven-publish

我试图遵循Gradle 4.10.2文档中的Maven发布指南,但是遇到了一些困难,因为这一切都在Groovy中。这是示例所要执行的操作:

task sourcesJar(type: Jar) {
    from sourceSets.main.allJava
    classifier = 'sources'
}

task javadocJar(type: Jar) {
    from javadoc
    classifier = 'javadoc'
}

这就是我想要做的:

tasks.register<Jar>("sourcesJar") {
    from(project(":core").sourceSets.allJava)
    classifier = "sources"
}

tasks.register<Jar>("javadocJar") {
    from(tasks["javadoc"])
    classifier = "javadoc"
}
不幸的是,找不到

allJava返回。在Kotlin Gradle DSL For Gradle版本4.10.3中执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

科特林DSL的

正确的build.gradle.kts语法 1.1.3 应该是:

plugins {
    `java-library`
    `maven-publish`
}

tasks.register<Jar>("sourcesJar") {
    from(sourceSets.main.get().allJava)
    archiveClassifier.set("sources")
}

tasks.register<Jar>("javadocJar") {
    from(tasks.javadoc)
    archiveClassifier.set("javadoc")
}

顺便说一句,classifier属性被标记为@Deprecated-您应该改用archiveClassifier


[更新]

但是, Gradle 4.10.3 具有 Kotlin DSL 1.0-rc-6 ,因此{{1 }}应该像这样:

build.gradle.kts