gradle - 如何在 Gradle 4.10.3 中使用 Kotlin Gradle DSL 从 sourceSets 获取“allJava”?
问题描述
我正在尝试遵循 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 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.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"
}
推荐阅读
- python - drf 序列化程序中的可写 create() 方法
- tensorflow - keras 图像到数组返回维度
- c++ - 在深色图像中找到相似的轮廓
- python - Jupyter Notebook 错误的 HTML 导出
- python - Python:如何在 Python 3 中找到两个网络之间的唯一节点?
- ruby-on-rails - 使用 shoryuken 手动重试 sqs 失败的作业
- jquery - 带有垂直文本的冻结标题的表格
- java - 405 Method not allowed POST,但允许
- android - 403 - disallowed_useragent - 基于 Webview 的 Android TV 浏览器
- c# - Update failed because it contains a derived or constant field