Gradle 包括第二个jar文件';It’这并不是一个胖乎乎的onejar

Gradle 包括第二个jar文件';It’这并不是一个胖乎乎的onejar,gradle,onejar,Gradle,Onejar,我有一个项目,它只为测试目的构建fat onejar文件。因此,有一个单独的测试类,我不希望它作为对主源的依赖,但我希望它包含在onejar中。奇怪的情况,我知道 我使用的是com.smokejumperit.gradle.OneJarPluginplugin(),很明显,它在这里得到了要包含在onejar中的文件列表: project.task('oneJar', dependsOn:[project.tasks.jar, project.tasks.typedefOneJar]) {

我有一个项目,它只为测试目的构建fat onejar文件。因此,有一个单独的测试类,我不希望它作为对主源的依赖,但我希望它包含在onejar中。奇怪的情况,我知道

我使用的是
com.smokejumperit.gradle.OneJarPlugin
plugin(),很明显,它在这里得到了要包含在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成为该jar的依赖关系

第二个jar文件是用一个任务构建的:

task integrationJar(type: Jar) {
    from sourceSets.integrationTest.output
    classifier = 'integration'
}
。。。因此,我可以通过
integrationJar.outputs.files
访问生成的文件集合。如果有一个明确的方法将其添加到
oneJar.input.files
,我会很高兴,但我不知道该怎么做。我试过这样的方法:

oneJar {
    dependsOn 'integrationJar'
    println integrationJar.outputs.files.getAsPath()
    inputs.files.add(integrationJar.outputs.files)
    println inputs.files.getAsPath()
}
。。。但是最后一次打印的结果仍然缺少integration jar文件


想法?

我不熟悉该插件的实现,但是如果
inputs.files
决定了包含哪些内容,我会感到惊讶。(通常,
inputs
只被Gradle的最新检查使用。)我建议尝试插件,它看起来更灵活。

只需在主要源代码中添加一个虚拟类,该类依赖于所讨论的jar。丑陋但有效。不确定你的确切意思。你能举个例子吗?集成jar文件是独立的,因为它有一些我不希望主要源代码具有的依赖项(如jetty)。你是说一个简单地将jar文件加载到类路径中的类还是什么?不知道那会是什么样子。