我需要分发一个集成测试,它存在于src / test下。所以我使用gradle来构建一个指向这个类的jar。
我在网上闲逛时想到了这一点:
task fatJar(type: Jar) {
zip64 = true
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Implementation-Version': 1.3,
'Main-Class': 'org.example.AnIntegrationTest'
}
from sourceSets.test.output
}
当我尝试运行时,我得到了:
Error: Could not find or load main class org.example.AnIntegrationTest
主要方法是在那里,并且' jar tf'确实向我展示了包装中的课程。
我在这里缺少什么?
答案 0 :(得分:0)
您的jar文件缺少测试运行时依赖项。一种可能的解决方案是将所有必需的依赖项打包到jar中。请注意,这会增加可分发jar的大小。
在jar任务中添加一个from
子句:
task fatJar(type: Jar) {
zip64 = true
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Implementation-Version': 1.3,
'Main-Class': 'org.example.AnIntegrationTest'
}
from sourceSets.test.output
//collect all dependencies
from { configurations.testRuntime.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}