我正在使用 shadow Gradle 插件来构建 JAR,其中包含所有引用的 jar。
在我的build.gradle
我只有
apply plugin: "com.github.johnrengelman.shadow"
和
jar {
manifest {
attributes 'Main-Class': 'MYCLASS'
}
}
与此有关。我不知道,它是如何知道的,要构建什么,但它确实有效。
现在,是否也可以包含测试类?
我正在使用 shadow Gradle 插件来构建 JAR,其中包含所有引用的 jar。
在我的build.gradle
我只有
apply plugin: "com.github.johnrengelman.shadow"
和
jar {
manifest {
attributes 'Main-Class': 'MYCLASS'
}
}
与此有关。我不知道,它是如何知道的,要构建什么,但它确实有效。
现在,是否也可以包含测试类?
来自官方文档https://imperceptiblethoughts.com/shadow/custom-tasks/
隐藏测试源和依赖项
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar task testJar(type: ShadowJar) { classifier = 'tests' from sourceSets.test.output configurations = [project.configurations.testRuntime] }
上面的代码片段将生成一个包含主源和测试源以及所有运行时和 testRuntime 依赖项的阴影 JAR。该文件输出到 build/libs/--tests.jar。
官方文档似乎与插件的最新(v7.0.0)版本过时了。使用这个版本和最新版本的 gradle (7.0),我这样做:
task testJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
archiveClassifier.set("alltests")
from sourceSets.main.output, sourceSets.test.output
configurations = [project.configurations.testRuntimeClasspath]
}
文档中的from
子句和“配置”子句都错误。
sourceSets.main.output
project.configurations.testRuntime
不像记录的那样工作,它告诉我testImplementation' is not allowed as it is defined as 'canBeResolved=false