Gradle `fatJar` 排除一些依赖过滤器不起作用

Gradle `fatJar` exclude some dependencies filter not working

我已经实现了低于 fatJar 的目标。

task fatJar(type: Jar) {
                zip64 = true
                manifest {
                    attributes(
                            'Implementation-Title': project.name,
                    )
                }

                from {
                    configurations.compile
                            .filter({
                                !it.name.equalsIgnoreCase('aspectjrt-1.9.4.jar')
                                !it.name.equalsIgnoreCase('aspectjtools-1.9.4.jar')
                          })
                            .collect {
                                it.isDirectory() ? it : zipTree(it)
                            }
                }

                from {
                    configurations.runtimeClasspath
                            .filter({
                                !it.name.equalsIgnoreCase('aspectjrt-1.9.4.jar')
                                !it.name.equalsIgnoreCase('aspectjtools-1.9.4.jar')
                            })
                            .collect {
                                it.isDirectory() ? it : zipTree(it)
                            }

                }
                from {
                    sourceSets.main.output.classesDirs
                }
            }

但是,filtered Jar 中的 packages 仍然出现在我的 fatJar 中,为什么?我怎样才能排除这个罐子?

修正为

configurations {
    infraJars
}
dependencies {
  infraJars 'lib/aspectjrt-1.9.4.jar'
  infraJars 'lib/aspectjtools-1.9.4.jar'
}
        task fatJar(type: Jar) {
            zip64 = true
            manifest {
                attributes(
                        'Implementation-Title': project.name,
                )
            }

            from {
                (configurations.compile - configurations.infraJars)
                        .collect {
                            it.isDirectory() ? it : zipTree(it)
                        }
            }

            from {
                (configurations.runtimeClasspath - configurations.infraJars)
                        .collect {
                            it.isDirectory() ? it : zipTree(it)
                        }

            }
            from {
                sourceSets.main.output.classesDirs
            }
            configurations.compile.transitive = false
        }