我有一个项目只构建fat onejar文件以进行测试。因此,有一个单独的测试类,我不希望它作为主要源的依赖,但我做希望它包含在onejar中。奇怪的是,我知道。
我正在使用com.smokejumperit.gradle.OneJarPlugin
插件(source here),显然它会获取要包含在onejar中的文件列表:
project.task('oneJar', dependsOn:[project.tasks.jar, project.tasks.typedefOneJar]) {
...
inputs.files([jar.outputs.files, project.configurations.getByName("compile"), project.configurations.getByName("runtime")])
jar.output.files
用于发布,所以我不希望发布第二个jar文件,两个project.configurations
将定义主源jar的依赖关系,我不想要这第二个罐子也是它的依赖。
第二个jar文件是使用任务构建的:
task integrationJar(type: Jar) {
from sourceSets.integrationTest.output
classifier = 'integration'
}
...所以我可以通过integrationJar.outputs.files
访问生成的FileCollection。如果有一个明确的方法将其添加到oneJar.input.files
,我会是金色的,但我无法弄清楚如何做到这一点。我尝试过这样的事情:
oneJar {
dependsOn 'integrationJar'
println integrationJar.outputs.files.getAsPath()
inputs.files.add(integrationJar.outputs.files)
println inputs.files.getAsPath()
}
...但最后一次打印的结果仍然缺少集成jar文件。
想法?
答案 0 :(得分:1)
我不熟悉该插件的实现,但如果inputs.files
确定包含哪些内容,我会感到惊讶。 (通常,inputs
只是由Gradle的最新检查消耗。)我建议尝试使用gradle-one-jar插件,这似乎更灵活。