包括第二个jar文件,它不是一个胖胖的onejar的依赖

时间:2013-07-26 16:35:30

标签: gradle onejar

我有一个项目只构建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文件。

想法?

1 个答案:

答案 0 :(得分:1)

我不熟悉该插件的实现,但如果inputs.files确定包含哪些内容,我会感到惊讶。 (通常,inputs只是由Gradle的最新检查消耗。)我建议尝试使用gradle-one-jar插件,这似乎更灵活。