簡體   English   中英

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

[英]How to get 'allJava' from sourceSets with Kotlin Gradle DSL in Gradle 4.10.3?

我正在嘗試遵循 Gradle 4.10.2 文檔中的 Maven Publish 指南,但遇到了一些困難,因為它都在 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是, allJava返回未找到。 在 Kotlin Gradle DSL For Gradle Version 4.10.3 中執行此操作的正確方法是什么?

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"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM