【问题标题】:How to get 'allJava' from sourceSets with Kotlin Gradle DSL in Gradle 4.10.3?如何在 Gradle 4.10.3 中使用 Kotlin Gradle DSL 从 sourceSets 获取“allJava”?
【发布时间】:2019-07-08 18:08:31
【问题描述】:

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

【问题讨论】:

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


    【解决方案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"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多