2

我正在尝试遵循 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 中执行此操作的正确方法是什么?

4

1 回答 1

1

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

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.3Kotlin DSL 1.0-rc-6,因此build.gradle.kts应该是这样的:

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

tasks.register<Jar>("sourcesJar") {
    from(sourceSets["main"].allJava)
    classifier = "sources"
}

tasks.register<Jar>("javadocJar") {
    from(tasks["javadoc"])
    classifier = "javadoc"
}
于 2019-02-19T15:38:35.117 回答