gradle - 如何在Gradle 4.10.3中使用Kotlin Gradle DSL从sourceSets中获取 'allJava'?

标签 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中,执行此操作的正确方法是什么?

最佳答案

Kotlin 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 ,因此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"
}

关于gradle - 如何在Gradle 4.10.3中使用Kotlin Gradle DSL从sourceSets中获取 'allJava'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54695079/

相关文章:

android - 如何使用gradle自己搭建appcompat(支持v7)?

sorting - compareBy如何使用 bool 表达式在kotlin中工作

android - 使用gradle作为应用程序的一部分在AAR中生成资源

gradle - JavaFX 和 Gradle 中的 NullPointerException 和 Resource 目录(通过 jar 文件分发)

code-coverage - 从 cobertura 报告中排除某些类别

java - 如何在 Spring Boot Gradle 项目的 .jar 根目录中构建文件夹?

java - Android webview,检测网站是否请求位置权限

kotlin - Kotlin 中 UInt 中位标志的 EnumSet

android - 将 Android 项目转换为使用 Gradle Script Kotlin

gradle - Kotlin 和 Gradle - 从 stdio 读取